Dan*_*har 8 php mysql laravel eloquent blade
我有3个表,如下所述.
Table 1(user):
id username password Name Age
Table 2(tasks):
id task_name description
Table 3(logs)
id user_id task_id date hours
Run Code Online (Sandbox Code Playgroud)
表关系:
user has_many logs
task has_many logs
logs belongs_to user
logs belongs_to task
Run Code Online (Sandbox Code Playgroud)
我想要实现的是获取具有用户名,任务名称,日期和小时的日志.
控制器:
return View::make('log.index')
->with('logs',log::all());
Run Code Online (Sandbox Code Playgroud)
刀片模板
@foreach($logs as $log)
<tr>
<td>{{$log->id}}</td>
<td>{{$log->users()->name}}</td>
<td>{{$log->tasks()->name}}</td>
<tr>
@endforeach
Run Code Online (Sandbox Code Playgroud)
但无法从相应的表中获取用户名称和任务名称.任何帮助表示赞赏.
Xia*_*Liu 14
更好的方法是在模型中定义逆hasMany关系,如此处所述
因此,在您的日志模型中,您可能需要定义:
class Log extends Eloquent {
protected $table = "logs";
public function user(){
return $this->belongsTo('User');
}
public function task(){
return $this->belongsTo('Task');
}
}
Run Code Online (Sandbox Code Playgroud)
然后在您的视图中,您可以使用:
$log->user()->first()->name
Run Code Online (Sandbox Code Playgroud)
甚至更好,通过使用动态属性:
$log->user->name
Run Code Online (Sandbox Code Playgroud)
$ log-> users()和$ log-> tasks()返回一个查询对象.下面,每次调用返回的结果与调用$ log-> users() - > get()和$ log-> tasks() - > get()相同.因为关系是多对多的,所以您需要迭代$ log-> users和$ log-> tasks来检索每条记录.
@foreach($logs as $log)
<tr>
<td>{{$log->id}}</td>
<td>
@foreach($log->users as $user)
{{$user->name}},
@endforeach
</td>
<td>
@foreach($log->tasks as $task)
{{$task->name}},
@endforeach
</td>
<tr>
@endforeach
Run Code Online (Sandbox Code Playgroud)
如果您希望将特定用户/任务附加到日志,则必须构建查询.
@foreach($logs as $log)
<tr>
<td>{{$log->id}}</td>
<td>{{$log->users()->where('id', '=', $userID)->first()->name}} </td>
<td>{{$log->tasks()->where('id', '=', $taskID)->first()->name}} </td>
<tr>
@endforeach
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
23866 次 |
最近记录: |