【问题标题】:Using Laravel 5 Join Query on Eloquent Model to return results in a specific order在 Eloquent 模型上使用 Laravel 5 Join Query 以特定顺序返回结果
【发布时间】:2018-02-25 00:23:07
【问题描述】:

我正在尝试执行一个联接查询,该查询将返回一个对象,该对象以正确的顺序包含来自 2 个表的值。

第一张桌子(员工):

staff_id       staff_name

v001              简·洛克斯
v002                                                                                                                                                                        ,

第二张桌子(外借):
staff_id        staff_loan
v002            400 美元
v001           200 美元

我的 Eloquent 模型连接查询:

$name= staff::join('loan','loan.staff_id','=','staff.staff_id')->pluck('staff.staff_name');
return([loan.staff_id,staff.staff_name,loan.staff_loan]) 

我目前得到的结果:
[v002,简·洛克斯,400 美元],
[v001,迈克·迪恩 $200]

我想要的结果:
[v002,迈克·迪恩,400 美元],
[v001,简·洛克斯 200 美元]

任何帮助将不胜感激。

【问题讨论】:

    标签: mysql laravel eloquent relational-database laravel-5.3


    【解决方案1】:

    您需要确保您访问的是您的集合,而不是直接访问表值。

    更新 1

    我在原始 MySQL 中构建了您的表和查询,并且所有内容都已检查。原始查询将是:

    SELECT a.staff_id, a.staff_name, b.staff_loan
    FROM `staff` a
    INNER JOIN (
        SELECT *
        FROM `loan`
    ) b ON a.staff_id = b.staff_id;
    

    将其翻译成 Laravel 查询:

    $names = Staff::join('loan', 'loan.staff_id', '=', 'staff.staff_id')
        ->select('staff.*', 'loan.staff_loan')
        ->get();
    

    【讨论】:

    • 感谢您的回复。但我正在使用 vuejs 来回应我的回复。有没有办法可以将staff_name 从staff 表中拉出的方式与loans 表中的staff_id 联系起来。这样我就可以遍历数组并将它们回显出来?
    • 这正是正在发生的事情。您将从由 staff_id 链接的员工表和贷款表中获取所有列。如果您想在 vue 组件中使用它,那么您只需将对象传递给您的视图并将其插入到您的 cue 组件中。
    • 但是为什么它仍然只是按照它在staff表中出现的顺序而不是它在loan表中的出现顺序将staff_name放入一个数组中。我仍然得到 [v002, v001],[Jane Rocks,Mike Dean], [$400,$200] 而不是 [v002, v001],[Mike Dean,Jane Rocks], [$400,$200]
    猜你喜欢
    • 2017-09-13
    • 2019-10-31
    • 2021-09-06
    • 2019-10-21
    • 2016-08-17
    • 2015-07-17
    • 2015-07-20
    • 2015-03-12
    • 1970-01-01
    相关资源
    最近更新 更多