我似乎无法弄清楚这段代码有什么问题。我正在运行laravel 5.4。
错误: https://www.dropbox.com/s/64ioxdf4mv6ps1w/Screenshot%202017-02-28%2020.11.33.png?dl=0
控制器功能:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Thread extends Model
{
public function messages()
{
return $this->hasMany(Message::class)->get();
}
}
模特:
assertEqual
答案 0 :(得分:3)
我建议添加您的错误代码而不是链接到图片(现在AWS已关闭,因此我无法查看图像)。
无论如何,messages
方法定义了一个关系,因此,它是查询构建器的一个实例。我没有在那里链接get
方法,而是建议采用略有不同的方法:
在您的控制器中
public function show($id)
{
// Use first() instead of get() since you're returning a
// specific model by its primary key (I assume)
return Thread::where('id', $id)->with('messages')->first();
}
在你的模特中
public function messages()
{
// This returns a query builder instance, which is what you want.
// It defines the relationship between Thread and Message
return $this->hasMany(Message::class);
}
这将eager load
您的消息以及Thread
模型。
希望它有所帮助!
答案 1 :(得分:1)
关于乔尔在评论中提出的问题......
用户::发现(1) - &GT;消息 - &GT;创建($请求 - &GT;仅( '主体'));
没有调用你提到的'messages function'而没有返回关系。相反,它正在调用消息属性,这是不同的。