Laravel使用连接查询Laravel雄辩
问题描述:
我有两个表“用户”和“项目”Laravel使用连接查询Laravel雄辩
表用户
-----------------------------------
user_id | name | email | password |
-----------------------------------
1 |name1 |email1 | password1|
-----------------------------------
2 |name2 |email2 | password2|
表项目
project_id |user_id | name |
--------------------------------------
1 | 1 | project_name1 |
-----------------------------------
2 | 1 | project_name2 |
有这两个表之间没有关系但项目中的user_id是来自用户表的ID。
普通查询
SELECT a.user_id,a.name AS的用户名,b.name AS PROJECT_NAME FROM用户LEFT JOIN项目B关于a.user_id = b.user_id;
我想在laravel雄辩中执行相同的查询。
在谷歌搜索了一下关于“有”功能,但无法获得输出的想法。
谢谢。
答
这是你应该用雄辩的方式: 创建user.php的
<?php
class User extends Eloquent
{
public function projects()
{
return $this->hasMany('Project');
}
}
创建Project.php
<?php
class Project extends Eloquent
{
}
在控制器,写这让所有用户,插入每个用户内部相关项目:
$users = User::with('projects')->all();
foreach($users as $user)
{
$project_of_this_user = $user->projects;
}
答
这应该是你所需要的:
DB::table('users')
->join('projects', 'projects.user_id', '=', 'users.user_id')
->select('users.user_id', 'users.name as username', 'projects.name as project_name')
->get();
+0
我已经试过这些,正在工作。我需要用laravel模型来做。我为'用户'创建了用户模型类,为'项目'创建了项目类 – PRASANTH
答
你可以简单地做如下,
DB::table('users')
->join('projects =', 'users.id', '=', 'posts.user_id')
->select('*')
->get();
欲了解更多详细信息,您可以参考laravel Docs
答
我想,这一个帮助你out
DB::table('users')
->leftJoin('projects', 'users.user_id', '=', 'projects.user_id')
->select('users.user_id', 'users.name as username', 'projects.name as project_name')
->get();
不清楚你的问题是什么。请说明你期望的结果。 – 1010
你使用'DB :: raw'吗? –
@ 1010我需要连接两个表格,我提到的正常查询。我必须在拉拉维尔雄辩中完成相同的输出。例如:使用User :: all()类似的语句。 – PRASANTH