【问题标题】:How to alias columns in Laravel Eloquent ORM using "leftJoin"如何使用“leftJoin”为 Laravel Eloquent ORM 中的列命名
【发布时间】:2015-02-28 14:11:21
【问题描述】:

我注意到如果我们在查询中使用 Eloquent "LeftJoin",

它返回数组中的结果集但是,如果我们在父表和关系表上具有相同的字段名称,例如“created_date”,那么它将只返回关系表中的字段值并覆盖父表字段的值。

我们如何获取父表字段 (create_date) 值以及关系表字段 (create_date) 值的值..?

【问题讨论】:

标签: laravel laravel-4 eloquent


【解决方案1】:
MainTable::leftJoin('LeftJoinTable', 'LeftJoinTable.main_id', '=', 'MainTable.id')->
selectRaw("MainTable.create_date as main_create_date, LeftJoinTable.create_date as leftJoin_create_date")->get(); //or ->first()

【讨论】:

  • 它正在工作,但如果我在父表和关系表上都有像“Fee”这样的字段,其中包含浮点值和字段类型 (8,2),那么它将返回错误的值。例如,父表“费用”字段的值为“111.50”,关系字段的值为“11.00”,但它返回的父字段值为“110”而不是“111.50”,为什么..?
  • 所以,你可以换个别名,mysql想知道他应该得到什么。
  • 我已经为“费用”字段创建了别名,如下所示: // QUERY USING LEFT JOIN with Eloquent $queryObj = Appraisal::leftJoin('scope_appraisal_info', function ($join) {$join- >on('scope_appraisal.appraisal_id', '=', 'scope_appraisal_info.appraisal_id');})->selectRaw('scope_appraisal.appraisal_id,scope_appraisal.appraisal_info_fee as main_fee,scope_appraisal_info.appraisal_info_fee as sub_fee')->where('scope_appraisal .appraisal_assignedto_appraisal_id', '=', $appraiserId); $result = $queryObj->get(); print_r($result);
  • 收到的响应如下:[items:protected] => Array ([0] => V2_0\Appraisal Object ([table:protected] => scope_appraisal [primaryKey:protected] =>appraisal_id [attributes :protected] => 数组 ([appraisal_id] => 9427 [main_fee] => 110 [sub_fee] => 0)
  • 你确定没有0吗?查询看起来正确
猜你喜欢
  • 2014-03-12
  • 1970-01-01
  • 1970-01-01
  • 2015-03-15
  • 1970-01-01
  • 2015-01-27
  • 1970-01-01
  • 2013-07-07
  • 2019-03-31
相关资源
最近更新 更多