我第一次使用laravel和im构建这个应用程序,我有以下查询。
$productDetails = DB::table('products')->where('products.id_product', $id_product)
->leftJoin('product_options', $id_product, '=', 'product_options.id_product')->where('product_options.is_active', '1')
->leftJoin('options', 'product_options.id_option', '=', 'options.id_option')->where('options.is_active','1')
->get();
每次我加载调用此查询的页面时,它都会永远保持旋转状态。数据不是太多,所以我知道它不是因为查询花费的时间太长,但有些事情导致了这一点。我已经启用了调试,但没有任何反应,我发现日志或其他任何地方都没有错误。
如果我注释掉join语句,查询将返回结果,但只要我添加回任何左连接语句,它就会继续旋转。有人看到上面的查询有什么问题吗?
答案 0 :(得分:0)
where
运算符的语法为where('column', 'operator', $value)
因此,您必须在查询中添加运算符(3个添加项)。
修改强>
抱歉,我没有注意到可以跳过相等运算符。
尽管如此,我认为你需要一个Many To Many(belogsToMany-belogsToMany)关系。它更容易,更干净。
答案 1 :(得分:0)
事实证明,我现在可以使用传递给函数的$ id_product变量加入,而是必须使用查询中的id_product值进行连接。
所以它必须是
$productDetails = DB::table('products')->where('products.id_product', $id_product)
->leftJoin('product_options', 'products.id_product', '=', 'product_options.id_product')->where('product_options.is_active', '1')
->leftJoin('options', 'product_options.id_option', '=', 'options.id_option')->where('options.is_active','1')
->get();