多对多无法支持闭包函数,tp5.0修复了的,麻烦改进一下

十年丶老鱼 5月前 308

image.png

最新回复 (9)
  • F4NNIU 打赏 5月前
    感谢TA
    0 引用 2

    使用 composer update 可以升级后端组件的哦。

  • 楽猪 1月前
    感谢TA
    0 引用 3

    请教一下 这个 我试了 好像还是不行呢?

  • 楽猪 1月前
    感谢TA
    0 引用 4
    F4NNIU 使用 composer update 可以升级后端组件的哦。

    好像还是不行 我现在是5.0.22

  • F4NNIU 打赏 1月前
    感谢TA
    0 引用 5
    楽猪 好像还是不行 我现在是5.0.22

    现在已经 5.0.24

  • 楽猪 1月前
    感谢TA
    0 引用 6

    您好,升级到5.0.24后,这个多对多的关联好像也没生效,还是我写法不对呢。请指教一下

    我的代码大致

            $model = new Brand();
            $model->with(['categories' => function($query) {
                // $query->where('id', $this->request->get('category_id'));
    
                $query->where('id', 3);
            }]);
            
            $rows = $model->page($page, $limit)->select();
            return $rows;

    品牌表(fa_brand)模型和分类表(fa_category)是多对多的关系。一个品牌可以拥有多个分类,一个分类也可以分配给多个品牌。

    我已经在brand模型里面建立好了多对多的关联categories

    需求是前端如果传递了category_id那么我就得查询这个分类下的所有品牌,如果不传我就查所有分类的。

    然后我是想在闭包里添加一个条件,但是结果得到的依然是全部的品牌数据。

    最后于 1月前 被楽猪编辑 (部分代码编辑出错)
  • 放码过来 1月前
    感谢TA
    0 引用 7

    闭包里面貌似不能写$this->request->get()来获取变量吧

  • 楽猪 1月前
    感谢TA
    0 引用 8
    放码过来 闭包里面貌似不能写$this->request->get()来获取变量吧

    嗯嗯 是的 。 我手动写死了也不行。

    就感觉这个闭包里的代码没有生效。 我在里面var_dump();exit; Log::error('日志内容')都没有效果。

    请教下,比如这种多对多的查询你们都是怎么写的?

  • 放码过来 1月前
    感谢TA
    0 引用 9

    你可以百度一下php 闭包函数如何引用外部变量

  • 楽猪 1月前
    感谢TA
    0 引用 10
    放码过来 你可以百度一下php 闭包函数如何引用外部变量

    我知道使用use可以引用外部变量。

    你看我上面代码,我已经在闭包里写死了这个变量了。 但是查询的结果并没有应用到这个条件。
    也就是说 我想查属于3这个分类下的品牌。 可是现在结果返回的依然是所有的品牌

  • 未登录
    11
返回