Laravel版本9.52.9,PHP版本8.2.4
我想显示一个只有组名的帖子列表:* 赞助商精选推广 *
另外,根据群组名称对帖子进行排序:* 特色(第一阶),助推(第二阶),赞助商(第三阶),...*
// Post Model
public function group()
{
return $this->belongsTo(Group::class);
}
// Group Model
public function posts()
{
return $this->hasMany(Post::class);
}
字符串
**更新:**如OMR所述。
Post::query()
->select([
'posts.id', 'posts.slug', 'posts.created_at',
'group_id', 'title', 'thumbnail', 'approved_at',
'groups.name as group_name'
])
->selectRaw("LENGTH(content) - LENGTH(REPLACE(content, ' ', '')) + 1 AS total_content_word_count")
->without('permissions')
->join('groups', 'posts.group_id', '=', 'groups.id')
->whereIn('groups.name', ['sponsor', 'featured', 'boost'])
->where('ads', true)
->published()
->orderByRaw("FIELD(groups.name, 'featured','boost','sponsor') ASC")
->latest('approved_at')
->paginate(30);
型
有没有人知道,我如何在关系表上实现这一点?
1条答案
按热度按时间rlcwz9us1#
MySQL FIELD()语法只适用于同一个表。
这不是很正确
MySQL FIELD()语法仅适用于查询表
要在查询范围内创建其他表,您应该连接它们。
字符串