在 Laravel 中为 Auth 传递数组(不是对象)
Posted
技术标签:
【中文标题】在 Laravel 中为 Auth 传递数组(不是对象)【英文标题】:Passing Array (not Object) for Auth in Laravel 【发布时间】:2017-08-25 07:54:00 【问题描述】:我在传递数组时遇到了一些问题,请给我一些建议,以便我可以解决这个问题。
这是我的控制器:
$keluhan_list=DB::table('keluhans')
->select(DB::raw('id,produk,username,masalah,id_departemen'))
->where('status','=','Proses')->get();
return view('layanankonsumen.lihattindaklanjut',compact('keluhan_list');
这是我的 Blade 视图的一部分:
@if (Auth::check() && (Auth::user()->level == 'MR' || Auth::user()->level == 'PDD' || Auth::user()->id_departemen ==' @foreach ($keluhan_list as $keluhan) $keluhan->id_departemen @endforeach' ))
这不是错误,但它没有通过身份验证。当我尝试用 Auth::user()->id_departemen == '10'
替换时,它正在工作。
【问题讨论】:
所以lavel
是用户表中的列吗?
@imrealashu level,id_departemen 是我的用户表上的列,我想授予具有特定用户 id_department 的用户访问更多权限。我尝试将其替换为“10”及其工作和我意识到我的错是在我调用数组时开始的
【参考方案1】:
返回视图中的一个错误
$keluhan_list=DB::table('keluhans')
->select(DB::raw('id,produk,username,masalah,id_departemen'))
->where('status','=','Proses')->get();
return view('layanankonsumen.lihattindaklanjut',compact('keluhan_list'));// add one more braces before semicolon
首先在刀片中添加这一行
@foreach ($keluhan_list as $keluhan)
<?php $id_dept[] = $keluhan->id_departemen; ?>
@endforeach
然后
@if (Auth::check() && (Auth::user()->level == 'MR' || Auth::user()->level == 'PDD' || in_array(Auth::user()->id_departemen,$id_dept) ))
【讨论】:
我得救了 :) 非常感谢兄弟,感谢您的所有回复,愿上帝保佑大家【参考方案2】:使用in_array()
。
检查一个值是否存在于数组中
@if (.... || in_array(Auth::user()->id_departemen, array_column($keluhan_list, 'id_departemen'))
【讨论】:
你好 @Alexey Mezenin 谢谢你的一些建议,但它以这样的错误结束 调用数组上的成员函数 pluck() 我该怎么办? @ChristianusAndre 如果是数组,请使用array_column($keluhan_list, 'id_departemen')
而不是$keluhan_list->pluck('id_departemen')
hello @Alexey Mezenin 错误消失了,但仍然没有显示我想显示的按钮,如果 auth 正确通过...我的 id_department 是 int,我通过它并检查 dd($keluhan_list) 和它显示值 10 (int) 它必须是工作但它不是 T_T
@ChristianusAndre 这与您提出的问题无关。只需调试所有 4 个条件,您就会看到哪个返回 false
以上是关于在 Laravel 中为 Auth 传递数组(不是对象)的主要内容,如果未能解决你的问题,请参考以下文章
将参数(当前选择的 $this->user->id 而不是 auth()->user()->id)从视图传递到 livewire + laravel 中的 createShow
将数组从 AuthController 传递到 Laravel 5 中的登录视图
Laravel(4.1.24)将查询输出传递给视图时数组到字符串的转换
Laravel:参数 2 传递给 Illuminate\Auth\SessionGuard::__construct()