Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.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
Php Laravel DB::表和语句?_Php_Database_Laravel - Fatal编程技术网

Php Laravel DB::表和语句?

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

我对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('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版。然而,我用原始查询完成了这项工作,现在它工作得很好。再次感谢!