【发布时间】:2018-03-29 15:55:56
【问题描述】:
我有这个方法:
公共功能菜单组() { return $this->belongsToMany(Layout::class, '_layout_pivot', 'side_menu_item_id', 'side_menu_group_id')->withTimestamps(); }结果是这样的(循环之一):
"id" => 1 “标签” => “系统/menu.settings_group” “图标” => “图标设置” “排序” => 10 “system_employee_id”=> 10 "created_at" => "2017-07-19 03:24:06" "updated_at" => "2017-07-17 00:00:00"
我还有表“system_employees”(只有几个示例列):
+----+----------------+------------+-----------+ -----+----------+----------+ |编号 |用户名 |名字 |姓氏 |年龄 | created_at |更新时间 | +----+----------------+-----------+------------+--- --+----------+----------+ | 1 |拉奎尔46932071 |拉奎尔 |海勒 | 25 | 2017-04-26 05:03:43 | 2017-07-03 21:13:37 | | 2 |布兰特13975229 |布兰特 |罗森鲍姆 | 30 | 2017-04-25 21:34:46 | 2017-05-07 09:28:27 | +----+----------------+-----------+------------+--- --+----------+----------+
system_employee_id from >belongsToMany 是 system_employees 的外键,等于 system_employees.id
我正在尝试将两者结合起来,以获得 system_employee 名称。
编辑(根据 aynber 评论):
我加入这两个并使用 paginate(),所以我不能使用 get 和 select,或者为列添加前缀:
$this->menuGroups
->leftJoin('system_employees', 'system_employees.id', '=', '_layout_side_menu_groups.system_employee_id')
->分页($pages, $columns, $pageName, $page);
这就是我得到的:
"id" => 18
"label" => "Some Insert Tester"
“图标” => “insico”
“排序” => 39
“system_employee_id”=> 18
"created_at" => "2017-07-03 00:28:05"
"updated_at" => "2017-07-03 00:28:05"
“类型” => 4
"system_id" => 0
"用户名" => "System2017"
“名字” => “丽塔”
“姓氏” => “维刚”
“年龄” => 0
“性别” => “”
“电子邮件” => “system@gmail.com”
“移动”=>“”
“rank_id” => 1
“rank_title” => “”
“状态”=> 1
“头像” => “mysite.com/img/14161939651400nds6k.jpg”
“密码” => “$2y$10$FIL4LmjLVEZ6SgUsRILqPutTEcaGWcmKyIHwPOBbQfHDYdJM5//2。”
"remember_token" => "vUI812NTJZ8RWrlX3g3quBy4quVrue1dnOVZEPzifRJdy85cJPQY7RclYNHU"
问题:
如何在不使用查询生成器的情况下从两个表中获取“created_at”、“updated_at”? 这同样适用于两个表中具有相同名称的任何其他列。
换句话说:有没有办法在 belongsToMany 中为列添加前缀?
【问题讨论】:
-
你必须指定你想要的列,并用
AS为重复的列命名。 -
@aynber 感谢您指出其他答案。但在我的问题中,我忘了补充,我使用的是 paginate(),所以我不能使用 get()。
-
您可以使用
select('menu_groups.*, system_employees.id AS se_id, ...')。但是,如果您使用的是 Eloquent,为什么不直接使用with()加载菜单项及其关系? -
@fubar 谢谢你的回答。我不知道如何将 with() 与 belongsToMany() 结合起来,我想继续使用它。所以我找到了另一个解决方案。解决方案,现在看起来很明显。
标签: php mysql laravel-5 eloquent