doulangxun7769 2015-10-23 19:41
浏览 57
已采纳

Eloquent ORM:具有相同变量的类似查询

Is there any possible way to retrieve the results of similar queries using Eloquent? Say you would like first_column to be the same value in three queries, but second_column to be three different values for those queries.

Example:

$query = Model::where('first_column', '=', $something);

list($value, $diff_value, $another_diff_value) = [1, 2, 3];

// This is where I would like the results to diverge.
$one = $query->where('second_column', '=', $value)->get();
$two = $query->where('second_column', '=', $diff_value)->get();
$three = $query->where('second_column', '=', $another_diff_value)->get();


Expected results:

$one | first_column | second_column |    $two | first_column | second_column |    $three | first_column | second_column |
-----+--------------+---------------+   ------+--------------+---------------+   --------+--------------+---------------+
     |       1      |       1       |         |       1      |       2       |           |       1      |       3       |
     |--------------|---------------|         |--------------|---------------|           |--------------|---------------|
     |       1      |       1       |         |       1      |       2       |           |       1      |       3       |
     |--------------|---------------|         |--------------|---------------|           |--------------|---------------|
     |       1      |       1       |         |       1      |       2       |           |       1      |       3       |
     |--------------|---------------|         |--------------|---------------|           |--------------|---------------|
     |       1      |       1       |         |       1      |       2       |           |       1      |       3       |
     |--------------|---------------|         |--------------|---------------|           |--------------|---------------|
     |       1      |       1       |         |       1      |       2       |           |       1      |       3       |
     --------------------------------         --------------------------------           --------------------------------


Actual results:

$one | first_column | second_column |   $two | empty   $three | empty
-----+--------------+---------------+   
     |       1      |       1       |         
     |--------------|---------------|         
     |       1      |       1       |         
     |--------------|---------------|         
     |       1      |       1       |         
     |--------------|---------------|         
     |       1      |       1       |         
     |--------------|---------------|         
     |       1      |       1       |         
     --------------------------------   


What am I missing?

  • 写回答

2条回答 默认 最新

  • doupuzhimuhan9216 2015-10-26 16:51
    关注

    I figured it out. This can be done, but you need to clone $query. It also helps to use Laravel's with helper function for chaining:

    $query = Model::where('first_column', '=', $something);
    
    list($value, $diff_value, $another_diff_value) = [1, 2, 3];
    
    // This is where I would like the results to diverge.
    $one = with(clone($query))->where('second_column', '=', $value)->get();
    $two = with(clone($query))->where('second_column', '=', $diff_value)->get();
    $three = with(clone($query))->where('second_column', '=', $another_diff_value)->get();
    

    It seems like this would be useful if $query is a longer query than the one provided in the example.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 opencv图像处理,需要四个处理结果图
  • ¥15 无线移动边缘计算系统中的系统模型
  • ¥15 深度学习中的画图问题
  • ¥15 java报错:使用mybatis plus查询一个只返回一条数据的sql,却报错返回了1000多条
  • ¥15 Python报错怎么解决
  • ¥15 simulink如何调用DLL文件
  • ¥15 关于用pyqt6的项目开发该怎么把前段后端和业务层分离
  • ¥30 线性代数的问题,我真的忘了线代的知识了
  • ¥15 有谁能够把华为matebook e 高通骁龙850刷成安卓系统,或者安装安卓系统
  • ¥188 需要修改一个工具,懂得汇编的人来。