Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.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 Pull和findOrFail未返回正确的行_Php_Laravel_Laravel 5.3 - Fatal编程技术网

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');
这是正确的,但我遵循的是Laravel
Gate
示例,其中FindOrFail抛出一个异常


非常感谢。

您不应该在
findOrFail()
之后使用
pluck()
,因为它只需运行查询即可从所有行中获取
c\u id
。改为这样做:

$c_id = Cons::findOrFail($cons)->c_id;
如果出于某种原因,您想使用
pluck()
,请执行以下操作:

$c_id = Cons::where('column', $cons)->pluck('c_id');

非常好用,谢谢你的解释!我可以在8分钟内接受答案。