Laravel Jetstream 比较两个表格以更改表格的背景

Posted

技术标签:

【中文标题】Laravel Jetstream 比较两个表格以更改表格的背景【英文标题】:Laravel Jetstream Comparing Two Tables to change the background of the table 【发布时间】:2021-11-23 02:27:17 【问题描述】:

我正在尝试制作一个用户有组织的表格,如果用户没有组织但该单元格的背景将会改变。我将数据存储在数据透视表中。我尝试将数据透视表的 user_id 放入一个数组并在刀片中进行比较,但它不起作用,如果我尝试将它放入 int 变量,我只会得到最后一个值。唯一改变的背景是数组的最后一个值,而不是其余的。

这是刀片文件

    @if($displayData->count())
    @foreach($displayData as $item)
         <tr>
            <td class="px-6 py-4 text-sm whitespace-no-wrap">
                 $item->id 
            </td>
            <td class="px-6 py-4 text-sm whitespace-no-wrap">
                 $item->name 
            </td>
            <td class="px-6 py-4 text-sm whitespace-no-wrap">
                 $item->email 
            </td>
            <td class="px-6 py-4 text-sm whitespace-no-wrap">
                 $item->created_at 
            </td>
            <td class="px-6 py-4 text-sm whitespace-no-wrap">
                 $item->updated_at 
            </td>
            <td class="px-6 py-4 text-sm whitespace-no-wrap">
                <x-jet-button wire:click="updateUserModel( $item->id )">
                    __('Update User')
                </x-jet-button>
                <x-jet-button wire:click="updateUserPasswordModel( $item->id )">
                    __('Update Password User')
                </x-jet-button>
                <x-jet-danger-button wire:click="deleteShowUserModal( $item->id )">
                    __('Delete')
                </x-jet-danger-button>
            </td>
            <td class="px-6 py-4 text-sm whitespace-no-wrap">
                <x-jet-button wire:click="addShowRoleModel( $item->id )">
                    __('Add Role')
                </x-jet-button>
                <x-jet-button wire:click="addShowTeamsModel( $item->id )">
                    __('Create Team')
                </x-jet-button>
            </td>
            <td class="px-6 py-4 text-sm whitespace-no-wrap" 
                style="
                    @foreach($isUsersHaveAffliatedOrganization as $orgs)
                        @if($item->id == $orgs )
                            background: blue;
                        @else
                            background: red;
                        @endif
                    @endforeach
                    ">
                <x-jet-button wire:click="addShowOrganizationModel( $item->id )">
                    __('Add Organization')
                </x-jet-button>
            </td>
        </tr>
    @endforeach
@else
        <tr>
            <td class="px-6 py-4 text-sm whitespace-no-wrap" colspan="4">
                No Results Found
            </td>
        </tr>
@endif

这是我的控制器 isUserHaveOrganization()

public function isUserHaveOganization()
     $this->isUserOrgAuthId = DB::table('organization_user')->orderBy('id','asc')->get()->pluck('user_id');
     return $this->isUserOrgAuthId;

读取()

public function read()
     return DB::table('users')->orderBy('id','asc')->paginate(10);

和渲染函数

public function render()
    return view('livewire.users',[
        'displayData' => $this->read(),
        'isUsersHaveAffliatedOrganization' => $this->isUserHaveOganization(),
    ]);

我不知道该怎么办。谢谢

【问题讨论】:

【参考方案1】:

那里不需要foreach。您可以通过contains 检查该 id 是否在集合中,如下所示:

style="
  @if($isUsersHaveAffliatedOrganization->contains($item->id))  
    background: blue;
  @else
    background: red;
  @endif
">

【讨论】:

感谢您的回答,但结果是一样的,因为它计算了数据透视表中 user_id 的数量并更改了具有相同 id 的用户的背景,我正在尝试比较数据透视表和用户表,所以如果用户的 id 在数据透视表中,它会检测到它并更改背景,谢谢您的回答 现在我明白你的问题了。我更新了答案,看看吧。

以上是关于Laravel Jetstream 比较两个表格以更改表格的背景的主要内容,如果未能解决你的问题,请参考以下文章

对惯性响应和 json 响应使用相同的方法 Laravel Jetstream

无法将 Jetstream 包安装到 Laravel 项目

Laravel 与 JetStream 和 LiveWire 不渲染(尾风)

Laravel 8 Jetstream:无法使用使用工厂和播种机播种的帐户登录

如何使用 laravel 8 +jetstream + spatie 为注册用户分配角色

Laravel 8 JetStream 引导程序 4