我在程序中发现了一个错误,我意识到User::find(1)->pluck('name', 'id')
会返回我在数据库中拥有的所有names
的集合。
为什么呢? User::find(1)
只返回一个用户对象,不应该采取相应的工作吗?
其他调查结果:
User::find(1)->get()->pluck('name', 'id')
会返回相同的结果
但那是因为User::find(1)->get()
也会返回所有用户。再次不直观的imo。
User::find(1)->take(1)->pluck('name', 'id')
但是有效。
答案 0 :(得分:2)
您执行了两次查询。您希望这样做只获得一个用户的名称和ID:
$user = User::where('id', 1)->pluck('name', 'id');
而不是:
User::find(1)->pluck('name', 'id')
答案 1 :(得分:1)
您不应在pluck()
之后使用find()
,因为它只会运行查询以从所有行获取ID。
请执行以下操作:
$user = User::where('id', 1)->pluck('name', 'id');
或类似的东西,
$user = User::find(1)->name; //if you need to fetch just one column
答案 2 :(得分:1)