我建立了一个不错的CRM系统,我将联系人与组织链接
在我的联系模式中,我有:
public function organizations()
{
return $this->belongsToMany('Organization')
->withPivot('ContractStatus')
->withTimestamps()
->orderBy('created_at', 'desc');
}
问题是它现在正在对组织表的创建日期进行排序。 但是为了回显每个联系人的作业历史列表,我想在数据透视表的created_at字段上订购,因为那是Contact en Organization之间的合同的日期。
我该怎么做?
答案 0 :(得分:1)
问题是,关系上的数据透视表字段使用前缀pivot_
别名,因此它们不会与相关的表字段冲突。
话虽如此,你需要这个:
public function organizations()
{
return $this->belongsToMany('Organization')
->withPivot('ContractStatus')
->withTimestamps()
->orderBy('pivot_created_at', 'desc');
}
请注意,只有在使用withTimestamps()
时才会有效,否则会出现unknown column
db错误。
编辑:根据OP评论,您可以使用传统方法并在字段前加上数据透视表名称:
public function organizations()
{
return $this->belongsToMany('Organization')
->withPivot('ContractStatus')
->withTimestamps()
->orderBy('PIVOT_TABLE.created_at', 'desc');
}