我正在使用 Laravel 4,特别是我正在寻找一个使用雄辩的 ORM 的答案。
我有一个表“任务”,其中包含分配给每一行的client_id和user_id 。
client_id指的是“ clients ”表中的客户端,user_id指的是“ users ”表中的用户。
我想做的:显示所有任务并显示“客户”名称和“用户”名字
所以结果在我的(刀片)视图中看起来像这样:
@foreach($tasks as $task)
<tr>
<td>{{ $task->user->first_name }}</td>
<td>{{ $task->client->name }}</td>
<td>{{ $task->description }}</td>
</tr>
@endforeach
上面的视图吐出 $task->client->name 非常好,但不幸的是,当我添加行 $task->user->first_name 时显示“尝试获取非对象的属性”
我的控制器如下所示:
$tasks = Task::with(array('user', 'client'))->get();
return View::make('index', compact('tasks'));
据我了解,我的模型也有所作为,所以我的模型如下所示:
class Task extends Eloquent {
protected $guarded = array();
public static $rules = array();
public function client() {
return $this->belongsTo('Client');
}
public function user() {
return $this->belongsTo('User');
}
}
和:
class User extends Eloquent implements UserInterface, RemindableInterface {
public function task()
{
return $this->hasMany('Task');
}
}
和:
class Client extends Eloquent {
public function projects(){
return $this->hasMany('Project', 'client_id');
}
}
关于如何使这项工作的任何想法?我已经摸不着头脑了——还要注意我不是数据库关系专业人士,所以解释越简单越好:)