我很难用laravel计算出这一点;对于订阅者关系,我们有两个枢轴表:
订阅者可以订阅以下问题:
question_subscriber
id question_id subscriber_id
1 2 3
2 2 4
3 3 1
4 3 2订阅者可以订阅用户:
user_subscriber
id user_id subscriber_id
1 1 6
2 1 7
3 2 1有问题所有者的普通问题表:
questions
id question user_id
1 abc? 1
2 xyz? 1
3 123? 2在它们的模型中正确地设置了枢轴关系,并且我可以使用foreach、问题订阅者、$question->subscribersQuestion as $subscriber或用户$user->subscribersUser as $subscriber来提取。
但是,我们如何提取属于用户的所有订阅者(直接或间接地(通过他们拥有的问题))?
例如,这些应该都是为user 1检索的订阅服务器。
6 // subscribed to directly
7 // subscribed to directly
3 // subscribed to through question
4 // subscribed to through question你知道在Laravel最有效的方法吗?
发布于 2014-12-03 09:44:21
这将是最简单的方法:
// assuming this setup:
User hasMany Question
User belongsToMany User (subscribers - direct)
Question belongsToMany User (subscribers - indirect)
// we don't need this, since we pass it by reference to the closure,
// but for clarity let's initialize this variable:
$indirectSubscribers = null;
$user = User::with(['questions.subscribers' => function ($q) use (&$indirectSubscribers) {
// get all indirect subscribers (cost of additional query)
$indirectSubscribers = $q->get()->unique();
}])->find($userId);
// merge with directs subscribers
$allSubscribers = $user->subscribers->merge($indirectSubscribers);https://stackoverflow.com/questions/27241168
复制相似问题