Laravel中的等效ORM查询

时间:2017-05-11 10:03:13

标签: laravel orm eloquent

以下是我的查询:

select nonrem_id as RefID  , (SELECT group_concat(concat(nonremu_updated_date, ' - ',name,' - ',ttu.nonremu_updates) SEPARATOR ',') FROM `fanda_bank_nonremit_update` as ttu left join fanda_mst_users on login_id = nonremu_createdby WHERE ttu.nonremu_cid = fanda_bank_acc_nonremitted.nonrem_id order by ttu.nonremu_id asc ) as Comments from `fanda_bank_acc_nonremitted` left join `fanda_mst_users` on `login_id` = `nonrem_created_by` where `nonrem_gl_date` >= 2017-02-01 and `nonrem_gl_date` <= 2017-05-11 and `nonrem_country` = BE

如何在Laravel Eloquent ORM中编写此查询。我尝试过使用“查询”构建器,但我想知道如何在纯ORM中编写此查询。

P.S:我不应该在任何地方使用DB :: raw()。

请帮助。

1 个答案:

答案 0 :(得分:0)

你不能,你需要DB::raw()来构建一个像这样的选择语句。

编辑:

如果您不关心在选择中使用DB::raw(),请在您的选择中尝试以下内容:

Model::select('nonrem_id as RefID',DB::raw('(SELECT group_concat(concat(nonremu_updated_date, ' - ',name,' - ',ttu.nonremu_updates) SEPARATOR ',') FROM `fanda_bank_nonremit_update` as ttu left join fanda_mst_users on login_id = nonremu_createdby WHERE ttu.nonremu_cid = fanda_bank_acc_nonremitted.nonrem_id order by ttu.nonremu_id asc ) as Comments'))

如果您使用的是严格模式,它将抛出QueryException因为您按非选定字段排序第一个查询,以避免此查询异常配置您的数据库连接以允许此类顺序。您可以在文件config/database.php上执行此操作,方法是将这两个参数添加到您的&#39;连接中的实际连接中。阵列:

  'strict' => true,
  'modes' => ['STRICT_TRANS_TABLES',
              'NO_ZERO_IN_DATE',
              'NO_ZERO_DATE',
              'ERROR_FOR_DIVISION_BY_ZERO',
              'NO_AUTO_CREATE_USER',
              'NO_ENGINE_SUBSTITUTION'],