试图用Laravel 5.2的雄辩模型实现
我有2张桌子:
1( 项目(ID、项目名称、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();
目标是打印到DoName和项目名称
@foreach($todos as $todo)
{{$todo -> ToDoName}}
{{$todo -> projectName}}
<br>
@endforeach
最好的方法是在表之间创建一个关系,并预先加载关系。
在Todo
模型中,添加以下方法:
public function project()
{
return $this->belongsTo('App'Project');
}
现在,从您的控制器中,您只需调用:
$todos = Todo::with('project')->where('user_id', Auth::id());
这将为您提供具有相应项目的当前登录用户的待办事项。
现在,在您看来,您可以使用:
@foreach($todos as $todo)
{{ $todo->name }}
{{ $todo->project->name }}
@endforeach
注意:如果您遵循一些约定会很好。表格列应如下所示:
users
表 -> 型号:User.php
列: id
, name
....
projects
表 -> 型号:Project.php
列: id
, name
, user_id
todos
表>模型:Todo.php
列: id
, name
, project_id
, user_id
.
请记住,当您遵循配置约定时,事情会容易得多。
试试这个,
$todos = DB::table('to_dos as T')
->leftjoin('projects as P','T.projectID','=','P.projectName')
->Where('T.users_id',Auth()->User()->id)
->get();