拉拉维尔属于关系存在


Laravel BelongsTo Relation Existance

我有客户和他的项目之间的当前关系

项目模型

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 属性。呈现此表时,应检查客户端是否存在。