Php 从闭包内部抓取外部变量
考虑到这一结束:Php 从闭包内部抓取外部变量,php,laravel,closures,Php,Laravel,Closures,考虑到这一结束: $users = User::with(array('posts' => function($query) { $query->orderBy('created_at', 'desc'); }))->get(); 如何将$query传递给get(),例如->get('query') 如果这是可能的话 更新: 这是对公认答案的后续行动 下面是基于$query->getRelation()提示的类似情况的结果代码 $query = Ticket::wit
$users = User::with(array('posts' => function($query) {
$query->orderBy('created_at', 'desc');
}))->get();
如何将$query
传递给get()
,例如->get('query')
如果这是可能的话
更新:
这是对公认答案的后续行动
下面是基于$query->getRelation()
提示的类似情况的结果代码
$query = Ticket::with(array('user' => function($q) use ($search) {
$q->where('name', 'LIKE', '%'. $search .'%')->orWhere('username', 'LIKE', '%'. $search .'%');
}));
return $query->whereIn('user_id', $query->getRelation('user')->lists('id'))->paginate(10);
另一种以雄辩的方式实现它的方法。这对我来说没有任何意义,但我认为您可以尝试以下方法来获得
$query
实例:
$users = User::with(array('posts' => function($query) {
$query->orderBy('created_at', 'desc');
}));
$relation = $users->getRelation('posts');
$relation
将包含一个illighte\Database\elogent\Relations\hassmany
(希望如此)的实例,但不确定如何使用它,但您可以使用$relation->getForeignKey()
来获取foreignkey
属性。最后,$users->get()
将执行查询
您还可以使用如下方式获取关系($query)对象:
$user = User::query();
$relation = $user->getRelation('posts');
dd($relation); // Illuminate\Database\Eloquent\Relations\HasMany
p/S:我不清楚你要做什么,如果这有帮助,你得到了你想要做的,那么请在评论中分享想法/事情。谢谢 为什么需要传递到
get
?这是您编写的框架/类吗?或者您正在使用外部库?如果它只是您编写的内容,请让User::with
返回一个类的实例,该类具有$query
,作为->get()
方法可以使用的属性access@WereWolf因为我可以返回一个数组并使用类似于->的东西,其中('foreign_key',$query)
。但在开始之前,我会问这个问题。它很有效,我会更新这个问题并展示我在做什么。你可能会发现这很有趣,在我上面的更新中,$query->getRelation('user')->list('id')
似乎没有应用约束。我喜欢它这是以雄辩的方式实现它的另一种方式。
+1:-)