Php Laravel DB::表和语句?
我对Laravel很陌生,不太了解与Php Laravel DB::表和语句?,php,database,laravel,Php,Database,Laravel,我对Laravel很陌生,不太了解与和子句结合使用的DB::table方法 所以我现在有一个疑问: $query = DB::select( DB::raw("SELECT * FROM tablethis WHERE id = '$result' AND type = 'like' ORDER BY 'created_at' ASC")); 它正在工作,但我想使用Laravel的查询生成器生成如下内容: $query = DB::table('tablethis')->where('i
和子句结合使用的DB::table
方法
所以我现在有一个疑问:
$query = DB::select( DB::raw("SELECT * FROM tablethis WHERE id = '$result' AND type = 'like' ORDER BY 'created_at' ASC"));
它正在工作,但我想使用Laravel的查询生成器生成如下内容:
$query = DB::table('tablethis')->where('id', '=', $result)->where('type', '=', 'like')->orderBy('created_at', 'desc')
但这似乎完全忽略了第二个where()
。那么,基本上我该怎么做呢 只需在另一个->where
后面添加另一个->where
就是获取另一个where
语句的方法
所以你的代码应该很好
$query = DB::table('tablethis')->where('id', '=', $result)->where('type', '=', 'like')->orderBy('created_at', 'desc')
一定是另一个零件出了问题。
我希望这不是你的全部疑问
如果是,则在结尾处需要一个->get()
。请确保此代码应按预期工作
我不知道您如何检查执行的查询,但您可以转到app/providers/EventServiceProvider.php
(我假设您有L5)并在boot
方法中添加:
Event::listen(
'illuminate.query',
function ($sql, $bindings, $time) {
$sql = str_replace(array('%', '?'), array('%%', "'%s'"),
$sql);
$full_sql = vsprintf($sql, $bindings);
file_put_contents(storage_path() . DIRECTORY_SEPARATOR .
'logs' . DIRECTORY_SEPARATOR . 'sql_log.sql',
$full_sql . ";\n", FILE_APPEND);
}
);
查看执行的确切SQL
此外(但这只是改进)当使用=
运算符时,您可以省略它,因此您可以在此处使用:
$query = DB::table('tablethis')->where('id', $result)->where('type', 'like')->orderBy('created_at', 'desc');
谢谢你的信息。这个省略看起来像我从现在开始要使用的东西:)。实际上运行LaaVel4.1.28,是这样工作的,也可以看到执行的SQL?@ USER3900189。如果你是Laravel的新手,你现在应该考虑学习L5。您可以将完全相同的代码添加到app/start/local.php
中,以跟踪代码更改(它在L4.2中工作-我没有使用L4.1,但可能会工作相同)必须实际执行以下操作:(如果有人有相同问题,请链接)才能使日志正常工作。事实上,出于某种原因,它似乎没有运行另一个where->。我本来会像你建议的那样从laravel 5开始,但我正在帮助一个朋友的网站,这个网站是用laravel建立的,所以不幸的是,这个项目没有机会。谢谢你在任何情况下的帮助,如果可以的话,我会投票:)如果有帮助的话,我会尝试添加->get()。谢谢:)@user2300189没问题。如果它改变了什么,请告诉我。如果你真的修复了它,让我知道是什么修复了你的问题。不幸的是,它没有帮助。出于某种原因(如果你检查我对另一个答案的评论),它只是没有拾取另一个where->语句。检查了日志。也许我正在使用的laravel装置有问题。所以我想这次我只是通过原始方法来做。无论如何谢谢你,很抱歉我不能给你投票,因为我没有足够的代表:)@user2300189听到这个消息我很难过。我正在使用查询生成器,它对我来说运行良好。(带有2个where子句)。你的代码没有问题。我现在唯一能想到的就是检查where子句是否100%正确。查看查询是否不包含任何异常。看看你是否确定。可能使用dd(DB::getQueryLog())代码>查看查询的原始外观。是的,它绝对是100%正确的,但输出是错误的。我正在使用的LV安装有问题。我注意到验证器的alpha_num规则也不起作用,而电子邮件验证器的规则起作用。我想我会考虑升级到第5版。然而,我用原始查询完成了这项工作,现在它工作得很好。再次感谢!