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 口若悬河_Php_Laravel_Laravel 5_Eloquent - Fatal编程技术网

Php 口若悬河

Php 口若悬河,php,laravel,laravel-5,eloquent,Php,Laravel,Laravel 5,Eloquent,我想用闭包做一个实验。这可能吗 通常,您会这样创建它 return User::whereIn('id', [1, 2, 3]) ->whereLang($channel) ->get(); return User::whereIn('id', function () { return FooBar::whereFooId('u' . $user->id)->get(['users'])->toArray()

我想用闭包做一个实验。这可能吗

通常,您会这样创建它

return User::whereIn('id', [1, 2, 3])
            ->whereLang($channel)
            ->get();
return User::whereIn('id', function () {
    return FooBar::whereFooId('u' . $user->id)->get(['users'])->toArray();
})
    ->whereLang($lang)
    ->get();
但是,我想做的是,如果可能的话,用闭包的方式来完成。我有一个数据库字段,它将用户ID作为字符串(表设计不是我的,所以我目前无法更改它,必须使用它)

所以我试着这样做

return User::whereIn('id', [1, 2, 3])
            ->whereLang($channel)
            ->get();
return User::whereIn('id', function () {
    return FooBar::whereFooId('u' . $user->id)->get(['users'])->toArray();
})
    ->whereLang($lang)
    ->get();
然而,当这样做时,我得到了错误

致命错误:未捕获异常“PDOException”,消息为“SQLSTATE[HY000]:一般错误:1096未使用表”


我的意思是,在数据库表中,我有一个ID像
1,2,3,4
一样存储的字符串,所以我只需要执行
分解(“,”,$id)。这将解决我的问题,当我分两步做的时候,我只是想知道我是否可以用闭包一步做。如果是这样,怎么做?

你可能想做

return User::whereIn('id', FooBar::lists('uid'));

假设用户id存储在
FooBar
表中的uid字段中

您在闭包内部使用
$user->id
,但您没有使用
函数()use($user)
$user
变量传递给闭包。为什么不先抛出一个错误呢?呃,看起来像是c&p错误嘿,很抱歉回答晚了。我是否能够将where子句附加到
lists
方法,例如
User::lists('users')->where('x','y')?更像
User::where('x','y')->列出('users')