Php Laravel 5-我如何回报一对一的关系?
我刚接触Laravel,使用Laravel 5时,从数据库返回数组时遇到问题 我有几个“幕”,每个幕都有许多“横幅”。每当我试图从我的横幅数组($act->banners->count())获取输出时,我发现它会抛出一个错误,因为它是空的 代码如下: routes.php:Php Laravel 5-我如何回报一对一的关系?,php,laravel,eloquent,Php,Laravel,Eloquent,我刚接触Laravel,使用Laravel 5时,从数据库返回数组时遇到问题 我有几个“幕”,每个幕都有许多“横幅”。每当我试图从我的横幅数组($act->banners->count())获取输出时,我发现它会抛出一个错误,因为它是空的 代码如下: routes.php: Route::model('banners', 'Banner'); Route::model('acts', 'Act'); // Controller routes Route::resource('acts', 's
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(模型)
Banner.php(模型)
sf_ActController.php(控制器)
acts/show.blade.php(视图)
@扩展('应用')
@节(“内容”)
{{$act->act_title}
{{$act->banner->count()}
此时,我得到以下错误:
a03036ad81fb4e6d90e9fe5e3da62c65第7行中的FatalErrorException:
调用null上的成员函数count()
为什么我没有获取我的横幅数据!?(h2标签中的title变量输出良好,因此db和所有东西都可以正常工作。)谢谢 您需要在关系中指定到模型的完整“路由”,包括名称空间:
public function act() {
return $this->hasMany('App\Banner');
}
与以下内容相同:
public function banner() {
return $this->belongsTo('App\Act' , 'act_id' , 'act_id');
}
在hasMany方法中包含外来kay的名称可能是个好主意
public function act() {
return $this->hasMany('App\Banner', 'act_id');
}
也可能不需要在“所属”中包含第三个参数
希望能有帮助。还可以与您共享一个链接,逐步了解Laravel:您当前的
关系设置如下:
public function act() {
return $this->hasMany('Banner');
}
但是,在您看来,您将这种关系称为:
$act->banner->count()
难道不是:
$act->act()->count()代码>谢谢。你的评论帮我弄明白了。我对函数的命名不正确$act->banner->count()'是正确的,但是您可以在我上面的“act”模型中看到,名为“act”的函数指的是“banner”部分。真是一团糟!一旦我解决了这个问题,上面答案中的名称空间就起作用了!我真的很感激你的帮助。很高兴我能帮上忙!快乐编码:)谢谢你,你完全正确!下面的答案还指出了另一个问题,一个名称错误的函数。。。一旦这两件事都解决了,它就完美地工作了!没有你的帮助,我不可能做到!伟大的我很高兴这有帮助。最美好的祝福。
public function act() {
return $this->hasMany('App\Banner');
}
public function banner() {
return $this->belongsTo('App\Act' , 'act_id' , 'act_id');
}
public function act() {
return $this->hasMany('App\Banner', 'act_id');
}
public function act() {
return $this->hasMany('Banner');
}