Laravel 的 Model::find(1) 返回全部数据而不是 id=1 的那行数据?

2019-03-21 21:30:58 +08:00
 win7pro

请教,Model::find($id)不是范围键=$id 的那一行数据吗?今天测试发现返回整个数据表全部数据。 使用的 Laravel 版本:5.5.45

Model 文件:

namespace App; use DB;

class User extends Model { public $table = 'users'; public $primaryKey = 'id';

static public function getU($user_id)
{
    DB::connection()->enableQueryLog();
    $user = self::find($user_id)->get();
    $u = [];
    $u['getQueryLog'] = DB::getQueryLog();
    $u['SQL'] = self::find($user_id)->toSql();
    return $u;
}

}

在 Controller 文件中调用 $u = User::getU(820); var_dump($u);

打印出来的内容:

array(2) { ["getQueryLog"]=> array(2) { [0]=> array(3) { ["query"]=> string(52) "select * from users where users.id = ? limit 1" ["bindings"]=> array(1) { [0]=> int(820) } ["time"]=> float(2.02) } [1]=> array(3) { ["query"]=> string(21) "select * from users" ["bindings"]=> array(0) { } ["time"]=> float(3.74) } } ["SQL"]=> string(21) "select * from users" }

可以看到 DB::getQueryLog() 返回了两个 sql 执行记录,为什么会出现两条呢?感觉是被第二条 sql 覆盖了第一条?

3773 次点击
所在节点    PHP
2 条回复
niucility
2019-03-21 21:34:48 +08:00
为啥 find 后还要 get()
win7pro
2019-03-21 21:39:18 +08:00
@niucility 茅厕顿开!!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/547183

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX