Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 5-我如何回报一对一的关系?_Php_Laravel_Eloquent - Fatal编程技术网

Php Laravel 5-我如何回报一对一的关系?

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

我刚接触Laravel,使用Laravel 5时,从数据库返回数组时遇到问题

我有几个“幕”,每个幕都有许多“横幅”。每当我试图从我的横幅数组($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(模型)

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');

}