------ 已添加 -------
它看起来像一个公告板。
用户可以创建“频道”并且
您可以进入“频道”并写“帖子”
从这里开始。
我创建的“频道”是
将会进入渠道模型
当我加入其他人创建的“频道”时,我进入了channels_joins模型。
简单
在渠道模型中
频道名称、创建者等信息
Channel joins模型只包含channel_id和user_id,每个id都与一个foreign key连接。
我在视图中组合了我创建的“频道”和我订阅的“频道”,并将它们显示为列表
代码如下
$joins = $this->channelJoins()
->join('channels', 'channel_joins.channel_id', '=', 'channels.id')
->get();
$channels = $this->channels()
->leftJoin('channel_joins', 'channels.id', '=', 'channel_joins.channel_id')
->select('channels.*', 'channel_joins.channel_id', 'channel_joins.user_id')
->get();
$vals = collect($joins)->merge($channels);
我需要迭代视图中的列表并显示两个数据。
这就是我陷入困境的原因
使用dd()检查时,$list由一个集合组成,其中有两个模型“App\Models\Channels”和“App\Models\Channel_joins”。
对于频道模型来说,频道名称不是问题,问题是打印订阅人数。
如果是通道连接模型,输出通道名称是一个问题。
我
@forelse ($posts as $list)
<tr>
<td>
<div class="p-1 ml-1">
<a href="{{ route('channel.show', $list->id) }}">{{ $list->name }}</a>
<p class="float-right">
Count:
<span class="total">
{{-- {{ dd($list) }}--}}
{{ ($list->count('user_id')) }}
</span>
EA
</p>
</div>
</td>
</tr>
@endforeach
------添加---------
这里是
Channels Table
Channel Joins Table
Users Table
谢谢回复
我有一个通道称为a,但在图中,它输出为两个。
另外,a频道订阅人数为2人,其他频道为0-1人。图中暴露了错误的值。
如何将我的查询修改为正确的方式?
这应该可以解决它:
$joins = Channel::whereHas('channelJoins', function($q) use ($userId) {
$q->where('user_id', $userId);
})
->get();
$channels = Channel::where('user_id', $userId)
->with('channelJoins')
->get();
$vals = collect($joins)->merge($channels);
{{ $list->channelJoins->count() }}