首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我需要的是显示所有用户的复选框,不管他们是否以laravel 8为特色文章。

我需要的是显示所有用户的复选框,不管他们是否以laravel 8为特色文章。
EN

Stack Overflow用户
提问于 2021-03-30 18:18:17
回答 1查看 54关注 0票数 0

--我有以下3个表,其中包含relationship ManyToMany

代码语言:javascript
复制
users TABLE
-------------------
   id  | name  
-------------------
   1   |  userName_1
   2   |  userName_2
   3   |  userName_3
   4   |  userName_4
   5   |  userName_5
-------------------
代码语言:javascript
复制
posts TABLE
----------------------
   id  | title
----------------------
   1   |  title one
   1   |  title two
   1   |  title three
----------------------
代码语言:javascript
复制
post_user TABLE
--------------------------------
post_id  | user_id  | featured 
--------------------------------
   1     |     1    |   Y
   1     |     2    |   Y
   1     |     3    |   N
   1     |     4    |   N
   1     |     5    |   N
--------------------------------

控制器

$ausers = User::All();

$post = POST::findOrFail(1);

视图编辑屏幕

代码语言:javascript
复制
@foreach ($ausers as $userx)   {{-- --}}
    @foreach ($post->users as $user)
        <tr>  
            <td>
                <input type="checkbox" name="users[]" value="{{-- $user->id --}}"  {{ $user->id == $user->pivot->user_id ? 'checked' : '' }}>  
            <label for="checkbox0">{{ $userx->name }}</label>
        </td>
        <td>
                <input type="checkbox" name="featured[{{-- $user->id --}}]" value="1" {{ $user->pivot->featured ? 'checked' : '' }} >
            </td>
         </tr> 
    @endforeach
@endforeach

问题是,我将显示具有价值'Y‘的特写文章,下面是

代码语言:javascript
复制
--------------------------------
post_id  | user_id  | featured 
--------------------------------
   1     |     1    |   Y
   1     |     2    |   Y
--------------------------------

我需要的是显示所有用户复选框5用户,无论他们是否有特色的帖子,并由拉拉8,和那些有特色的用户显示一个复选框。我希望我能说清楚。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-31 06:27:58

您应该在Users上使用join使其更简单:

控制器

代码语言:javascript
复制
$post = Post::findOrFail(1); // Class names should follow naming convention: POST -> Post

$users = User::select(['id', 'name', 'user_id', 'featured'])
    ->leftJoin('post_user', function($join) use($post) {
        // Using leftJoin "user_id" and "featured" will be null when user wasn't selected
        return $join->on('users.id', '=', 'post_user.user_id')
            ->where('post_user.post_id', $post->id);
    })
    ->orderBy('name')
    ->get();

视图

代码语言:javascript
复制
@foreach ($users as $user)
    <tr>  
        <td>
            <input type="checkbox" name="users[]" value="{{ $user->id }}"  {{ $user->user_id != null ? 'checked' : '' }}>  
            <label for="checkbox0">{{ $user->name }}</label>
        </td>
        <td>
            <input type="checkbox" name="featured[{{ $user->id }}]" value="1" {{ $user->featured ? 'checked' : '' }}>
        </td>
     </tr> 
@endforeach
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66876408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档