无法访问Laravel Blade中的外键

时间:2015-11-21 10:43:18

标签: php mysql html5 laravel-5 blade

我有'项目'和'客户'之间的关系。这是我的模特..

class Client extends Model
{
  public function projects() {
    return $this->hasMany('App\Models\Project');
  }
}

class Project extends Model
{
  public function clients() {
    return $this->belongsTo('App\Models\Client');
  }
}

在我的'Projects'控制器索引方法中..

$projects = Project::all();
return view('project/projects', compact('projects'));

然后在我的刀片文件中..

@foreach($projects as $project)
<div class="project">
  <div class="status pending"></div>
  <p>{{ $project->name }}</p>
  <span>{{ $project->clients->name }}</span>
</div>
@endforeach

我收到以下错误'试图获取非对象的属性'。 Laravel的新手,请放轻松。

2 个答案:

答案 0 :(得分:0)

该代码确实看起来会起作用(或者不会起作用,但出于不同的原因),但我发现有时候你需要做这样的事情,因为你可能期望的工作关系:

$projects = Project::with('clients')->get();
return view('project/projects', compact('projects'));

另请注意,由于clients是HasMany关系,因此您需要迭代$projects->clients以获取其中一个的->name属性。

答案 1 :(得分:0)

在我的项目表的client_id列中,其中一个字段设置为0.因此,当迭代并到达该点时,它失败了,这就是我的错误消息所属。