Laravel 或ThinnkPhp 如何重复利用模型查询数据

使用Laravel的查询构造器查询数据,先建立了一个公共的条件构造器,然后遍历channels这个对象,每次循环时$model都会把上一次的条件叠加,也就是pay_channel,我不想让每次循环都把上次的条件叠加,我每次循环时都给$model重新赋值为初始构造器,为什么还会叠加查询条件,求解或者有没有好的解决方案,谢谢!

$channelDb = \DB::table('order')->where('app_id', $appid);
foreach ($channels as $vo) {
    $model = $channelDb;
    $data = $model->where('pay_channel', $vo->id)->get()->toArray();
    unset($model);
}
阅读 3.5k
3 个回答

对象是引用的, 不管你赋值几次, 修改的都是一个对象.

你应该把$vo->id收集到一个数据里, 然后用 whereIn 条件.

Laravel有个函数 array_plurk($channels, 'id') 大概这样.

看你的意思的是获取channel的order?
为何不用关联模型,hasMany 一对多,方便多了

$model = clone $channelDb;
查询条件就不会叠加啦~~

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题