我有客户和他的项目之间的当前关系
项目模型
public function client()
{
return $this->belongsTo('Client', 'cid');
}
项目控制器
public function index() {
$projects = Project::with('client')->orderBy('pid', 'desc')->get();
$this->layout->content = View::make('projects.index')->with('projects', $projects);
}
现在一切正常,我能够从项目视图中获取有关客户的所有信息。但是,如果客户端 ID 在数据库中(在客户端表中)不存在,则会收到错误"尝试获取非对象的属性"。我希望能够发送一个空对象,而不是收到此错误。不确定从哪里开始,我是从模型本身还是从控制器进行检查,还是在视图中添加检查?
您可以将约束应用于预先加载。为了验证概念,
$users = Project::with(array('client' => function($query)
{
$query->raw(
/*Add your constraint here to coalesce a default for cid or clients.
You may set a default null record in the client table for this case.*/
);
}))->get();
我敢打赌,当你渲染一个表格时,你会使用一些想法:
project.client.name
在这种情况下,它应该引发异常,因为客户端不存在,但您尝试访问 name 属性。呈现此表时,应检查客户端是否存在。