【发布时间】:2015-12-12 12:21:42
【问题描述】:
我想做一个带闭包的 whereIn。这可能吗?
通常,您会像这样创建它
return User::whereIn('id', [1, 2, 3])
->whereLang($channel)
->get();
但是,我想做的是用一个闭包来做——如果可能的话。我有一个数据库字段,其中有用户的 id 作为字符串(表设计不是我的,所以我目前无法更改它,必须使用它);
所以我试着这样做
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,所以我只需要做一个explode(', ', $ids);。这将解决我的问题,当我分两步完成时,我只是想知道我是否可以在一个关闭的情况下完成。如果有,怎么做?
【问题讨论】:
-
您在闭包内使用了
$user->id,但您没有将$user变量传递给function () use ($user)的闭包。怎么不先抛出错误? -
呃,好像是c&p错误
标签: php laravel laravel-5 eloquent