Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法获得类似条件的完整查询Laravel 6.5.2_Laravel_Query Builder - Fatal编程技术网

无法获得类似条件的完整查询Laravel 6.5.2

无法获得类似条件的完整查询Laravel 6.5.2,laravel,query-builder,Laravel,Query Builder,我正在使用Laravel Framework 6.5.2构建一个网站。 但是我对查询生成器有一个问题。 我尝试了“where like”条件,但它不起作用 $query = Order::where('customer_name', 'LIKE', '%Jone%'); print_r($query->toSql()); // this returns "select * from orders where customer_name LIKE ?" 为什么会发生这种情况?如何解决这个问

我正在使用Laravel Framework 6.5.2构建一个网站。 但是我对查询生成器有一个问题。 我尝试了“where like”条件,但它不起作用

$query = Order::where('customer_name', 'LIKE', '%Jone%');
print_r($query->toSql());
// this returns "select * from orders where customer_name LIKE ?"
为什么会发生这种情况?如何解决这个问题?

请试试这个

你错过了
get()


我不确定这里是否真的出了什么问题。要理解为什么,考虑那些准备好的语句(这是Laravel在引擎盖下使用的)在应用程序代码中实际上没有被评估。相反,带有绑定参数的语句被发送到MySQL数据库并在那里进行计算。因此,你准备好的声明应该是这样的:

select * from orders where customer_name like ?

现在,关于您的查询是否逻辑正确,或者是否存在其他问题,是另一个问题,但您所做的任何事情本身都没有显示出我们的错误。

Laravel使用了准备好的语句。它们是一种编写SQL语句的方法,无需将变量直接放入SQL字符串中。您看到的
是信息的占位符或绑定,稍后将被PDO替换并自动清除。有关准备好的语句的更多信息,请参见PHP文档

要查看将被替换到查询字符串中的数据,可以对查询调用
getBindings()
函数,如下所示

$query = Order::where('customer_name', 'LIKE', '%Jone%');

dd($query->toSql(), $query->getBindings());
绑定数组的替换顺序与SQL语句中出现的
相同

或者,获取绑定数据的另一种方法是

\DB::enableQueryLog(); // Enable query log

$query = Order::where('customer_name', 'LIKE', '%Jone%')->get();

dd(\DB::getQueryLog()); // Show results of log

谢谢你的关注。事实上,这种方法是我第一次尝试的。但因为它不起作用,我尝试了上面的方法。这并不能真正回答问题。$query=Order::where('customer_name','LIKE','%Jone%')->get();打印(查询);对你有用吗?获取方法?是的,谢谢。如果没有get()方法,$query->toSqI()函数不会返回完整的sql
$query = Order::where('customer_name', 'LIKE', '%Jone%');

dd($query->toSql(), $query->getBindings());
\DB::enableQueryLog(); // Enable query log

$query = Order::where('customer_name', 'LIKE', '%Jone%')->get();

dd(\DB::getQueryLog()); // Show results of log