Php Laravel Pull和findOrFail未返回正确的行
我正在使用Php Laravel Pull和findOrFail未返回正确的行,php,laravel,laravel-5.3,Php,Laravel,Laravel 5.3,我正在使用Gatefacade检查用户是否可以删除行 Gate::define('delete-cons', function ($user, $cons) { $c_id = Cons::findOrFail($cons)->pluck('c_id'); return $user->c->id == $c_id; }); 如果我输出$cons,它将返回4 4 2 1 Mr Joe Bloggs male 123
Gate
facade检查用户是否可以删除行
Gate::define('delete-cons', function ($user, $cons) {
$c_id = Cons::findOrFail($cons)->pluck('c_id');
return $user->c->id == $c_id;
});
如果我输出$cons
,它将返回4
4 2 1 Mr Joe Bloggs male 1234567 0 1_1474822931.png 2017-01-02 17:33:49 2017-01-02 17:33:49 NULL
上面的第一列是主键,因此我们可以看到,它应该返回此行
但是,在查询后输出$c_id
时,它会显示:
#items: array:4 [▼
0 => 1
1 => 1
2 => 1
3 => 2
]
我本以为它会返回2
的最后一个结果,但它会返回表中的所有4行
即使我手动键入要获取的行的ID:
$c_id = Cons::findOrFail(4)->pluck('c_id');
它仍然返回所有行
我知道我可以用
$c_id = Cons::where('id', $cons)->pluck('c_id');
这是正确的,但我遵循的是LaravelGate
示例,其中FindOrFail抛出一个异常
非常感谢。您不应该在
findOrFail()
之后使用pluck()
,因为它只需运行查询即可从所有行中获取c\u id
。改为这样做:
$c_id = Cons::findOrFail($cons)->c_id;
如果出于某种原因,您想使用pluck()
,请执行以下操作:
$c_id = Cons::where('column', $cons)->pluck('c_id');
非常好用,谢谢你的解释!我可以在8分钟内接受答案。