Laravel sql查询不断运行永远

时间:2014-11-18 23:06:28

标签: php mysql laravel laravel-4

我第一次使用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语句,查询将返回结果,但只要我添加回任何左连接语句,它就会继续旋转。有人看到上面的查询有什么问题吗?

2 个答案:

答案 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();