【问题标题】:laravel 4 - how output distinct values of relationlaravel 4 - 如何输出不同的关系值
【发布时间】:2015-01-24 09:51:05
【问题描述】:

我有这个数据透视表: 实体立场 id - event_id - question_id - entity_id - standpoint_value 实体参与事件,并通过参与表明他们对问题的立场。

第 12 题是“你喜欢蓝色吗?”

问题 11 是“你喜欢红色吗?

事件“1”是“请说出你喜欢或不喜欢的颜色”

三个记录的简化案例:

id - event_id - question_id - entity_id - standpoint_value
1 - 1 - 12 - 101 - 1
2 - 1 - 12 - 102 - 0 
3 - 1 - 11 - 103 - 1

所以实体 101 和 102 回答问题 12,实体 103 回答问题 11

我想做什么: 我想创建一个关系,列出一个事件中回答的所有问题,但我想打印 DISTINCT 问题,而不重复它们 - 在这种情况下,问题 12 将被打印两次。

我在名为 Event1 的模型中定义了这种关系:

public function question_byrel()
{
    return $this->hasMany('Entitystandpoint', 'event_id');
}

但是当我像这样进行 foreach 循环时:

@foreach ($object->question_byrel->unique() as $rq) 
....
@endforeach 

它会列出所有出现的问题。而且我要 是问题没有。 12 只打印一次。 unique() 不起作用,它至少不会使视图崩溃。 如何告诉 L4 哪一列应该被视为“不同的”? unique('column_name') 也不起作用。

如果有人愿意提供高级建议:在最终版本中,我很乐意列出所有 DISCTINCT 问题,但此外,如果有多个实体回答同一个问题,我'想在上述循环的一个周期内枚举它们。 我很乐意打印实体的数量,列出它们会很麻烦。

谢谢

【问题讨论】:

  • 再次检查您的代码,因为这不会返回 Eloquent 模型的重复项。
  • 不,代码不工作 - 它不能,就我理解的代码而言,它没有通知 Laravel,我想让“question_id”与众不同。

标签: php laravel collections laravel-4 distinct


【解决方案1】:

如果您想通过primary key 以外的属性使Eloquent\Collection 项目唯一,请执行以下操作:

@foreach ($object->question_byrel->keyBy('question_id') as $rq)

【讨论】:

    猜你喜欢
    • 2021-12-11
    • 2013-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-12
    • 1970-01-01
    • 2016-02-12
    • 2015-04-19
    相关资源
    最近更新 更多