- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
背景
我有一个列表模型,它属于并且有很多订阅者。当然还有一个属于并拥有许多列表的订阅者。
问题
我想从多个列表中预先加载所有订阅者。但是,我只对不同的订阅者感兴趣,因为订阅者可以拥有并且确实属于多个列表。
我的尝试
我用过 distinct()
方法,但这并没有产生任何乐趣。而且我还可以遍历结果集以手动切出重复项。只是想知道是否有办法让 Laravel 为我做肮脏的工作?
代码
$lists = Input::get('listsarray');
$addresses = Addressbook::with(array('subscribers' => function($query)
{
$query->where('active', '=', 1);
// $query->distinct(); //This didn't work
}))->whereIn('id', $lists)->get();
最佳答案
通过加入检索唯一订阅者
我会尽量用 Lists
来解释它而不是 Adressbook
,因为我无法真正理解您的模型,这可能会引起进一步的困惑。
如果我正确理解了您的评论,那么您正在尝试检索与 id IN listarray
列表有关联的所有唯一订阅者。 .在这种情况下,Eager Loading 不是正确的方法。 Eager loading 用于为模型预加载关联,以便稍后使用它们。在您的情况下,您没有检索 Lists
和他们的 Subscribers
,而是独一无二的 Subscribers
他们自己。
$lists = Input::get('listsarray');
$subscribers = Subscriber::join('list_subscriber', 'list_subscriber.subscriber_id', '=', 'subscribers.id')
->whereIn('list_subscriber.list_id', $lists)
->groupBy('list_subscriber.subscriber_id')
->get(array('subscribers.*'));
// Simply include a with('lists') and Eloquent will eager load them
$subscribers = Subscriber::with('lists')
->join('list_subscriber', 'list_subscriber.subscriber_id', '=', 'subscribers.id')
->whereIn('list_subscriber.list_id', $lists)
->groupBy('list_subscriber.subscriber_id')
->get(array('subscribers.*'));
lists
. lists
构建独特的阵列list_ids
list_subscribers
使用 WHERE list_id IN (X, Y, Z)
list_subscribers
构建独特的阵列subscriber_id
subscribers
使用 WHERE id IN (X, Y, Z)
关于laravel - Eloquent ORM 在多对多关系中加载不同的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18403135/
我正在开发一个需要能够平均三个数字的 Facebook 应用程序。但是,它总是返回 0 作为答案。这是我的代码: $y = 100; $n = 250; $m = 300; $number = ($y
我只是无法弄清楚这一点,也找不到任何对我来说有意义的类似问题。我的问题:我从数据库中提取记录,并在我的网页上以每个面板 12 条的倍数显示它们。因此,我需要知道有多少个面板可以使用 JavaScrip
我是一名优秀的程序员,十分优秀!