我是Laravel的新手,並且使用Laravel 5,我無法從數據庫返回數組。Laravel 5 - 如何返回oneToMany關係?
我有幾個「行爲」,每個行爲都有很多「橫幅」。每當我嘗試從我的橫幅數組輸出($ act-> banners-> count()),我發現它會拋出一個錯誤,因爲它是空的。
下面是代碼:
routes.php文件:
Route::model('banners', 'Banner');
Route::model('acts', 'Act');
// Controller routes
Route::resource('acts', 'sf_ActController');
Route::resource('acts.banners', 'sf_BannerController');
Route::bind('banners', function($value, $route) {
return App\Banner::whereact_id($value)->first();
});
Route::bind('acts', function($value, $route) {
return App\Act::whereact_id($value)->first();
});
Act.php(模型)
namespace App;
use Illuminate\Database\Eloquent\Model;
class Act extends Model
{
protected $table = 'sf_act';
protected $primaryKey = 'act_id';
public function act() {
return $this->hasMany('Banner');
}
}
Banner.php(模型)
namespace App;
use Illuminate\Database\Eloquent\Model;
class Banner extends Model
{
protected $table = 'sf_banner';
protected $primaryKey = 'banner_id';
public function banner() {
return $this->belongsTo('Act' , 'act_id' , 'act_id');
}
}
sf_ActController.php(控制器)
種namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Act;
use App\Banner;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Input;
use Redirect;
class sf_ActController extends Controller
{
public function show(Act $act)
{
//pass object to correct view
return view('pages.acts.show' , compact('act'))->with('banner', Banner::find($act));
}
行爲/ show.blade.php(圖)
<!-- /resources/views/acts/show.blade.php -->
@extends('app')
@section('content')
<h2>{{ $act->act_title }}</h2>
{{ $act->banners->count() }}
在這一點上,我得到以下錯誤:
FatalErrorException in a03036ad81fb4e6d90e9fe5e3da62c65 line 7: Call to a member function count() on null
爲什麼我沒有取我的旗幟數據!? (h2標籤中的標題變量輸出很好,所以數據庫和所有的東西直到那一刻都在工作。)謝謝。
謝謝你,你絕對是對的!還有另一個問題在下面的答案中被指出,一個名稱錯誤的函數......一旦這兩件事情得到修復,它就完美了!沒有你的幫助,我無法做到! – Leon
太棒了!我很高興它有幫助。最好的祝願。 – JuanDMeGon