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 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line