尝试使用Laravel 5.2的雄辩模型实现
我有两张桌子:
1)项目(id,projectName,users_id)
2)todo(id,todoName,ProjectID [id],users_id)
我想加入这些表并使用
预告表格内容->where('users_id','=',Auth()->User()->id)
部分代码
$todos = DB::table('to_dos')->join('projects','to_dos.projectID','=','projects.projectName')
->where('users_id','=',Auth()->User()->id)
->get();
目标是打印toDoName和projectName
@foreach($todos as $todo)
{{$todo -> ToDoName}}
{{$todo -> projectName}}
<br>
@endforeach
答案 0 :(得分:3)
最好的方法是在表之间创建关系并急切加载关系。
在Todo
模型中,添加以下方法:
public function project()
{
return $this->belongsTo('App\Project');
}
现在,您可以通过控制器致电:
$todos = Todo::with('project')->where('user_id', Auth::id());
这将为您提供当前登录用户的Todos以及相应的项目。
现在在您看来,您可以使用:
@foreach($todos as $todo)
{{ $todo->name }}
{{ $todo->project->name }}
@endforeach
注意:如果您遵循一些惯例,那将是一件好事。表格列如下:
users
表格 - &gt;型号:User.php
列:id
,name
....
projects
表格 - &gt;型号:Project.php
列:id
,name
,user_id
todos
table-&gt;型号:Todo.php
列:id
,name
,project_id
,user_id
。
请记住,当您遵循约定而不是配置时,事情就会容易得多。
答案 1 :(得分:0)
试试这个,
$todos = DB::table('to_dos as T')
->leftjoin('projects as P','T.projectID','=','P.projectName')
->Where('T.users_id',Auth()->User()->id)
->get();