当一个或多个变量为空时,如何将多个变量发送到 laravel 中的视图
Posted
技术标签:
【中文标题】当一个或多个变量为空时,如何将多个变量发送到 laravel 中的视图【英文标题】:How to send multiple variable to a view in laravel when one or more variables are null 【发布时间】:2017-06-25 13:34:40 【问题描述】:当新用户注册并被重定向到个人资料页面时。所有这些 $userconatact
、 $qualification
和 $profileimage
变量都是空的。主页使用if (condition)
设置,具有填写表格或向用户显示可用数据的按钮。共有三种表格,用户必须一一填写这些表格。所有这些变量或其中一个变量都可能为空,但我仍想将空值发送给查看。有什么办法可以实现这种观点。
class ProfileController extends Controller
public function showprofile($type=null, $id='id')
$contactquery = Usercontact::where('user_id',Auth::user()->id)->select('*')->get();
$usercontact = $contactquery->toArray();
$qualificationquery = userqualification::where('user_id',Auth::user()->id)->select('*')->get();
$qualification = $qualificationquery->toArray();
$profileimagequery = Profileimage::where('user_id',Auth::user()->id)->select('id','user_id','profileimage')->get();
$profileimage = $profileimagequery->toArray();
return view('home')->withUsercontact($usercontact)->withQualification($qualification)->withProfileimage($profileimage);
我尝试使用 if 语句,但 if 不起作用
return view('home')
if(!empty($usercontact))->withUsercontact($usercontact)
if(!empty($qualification))->withQualification($qualification)
if(!empty($profileimage))->withProfileimage($profileimage);
有什么方法可以像这样使用if statements
让它变得简单。
【问题讨论】:
【参考方案1】:1) 使用 compact 会自动为您创建键值对。
return view('home')->compact('usercontact','qualification','profileImage')
2) 以下是对您的代码的一些其他改进。您可以使用 Auth 门面来访问已登录的用户。
$usercontact = Auth::user();
3) 在您的用户模型上定义relationships 并通过它访问资格。这将返回一个集合。
$qualification = $usercontact->qualifications;
【讨论】:
我的变量包含数组,并且该紧凑返回无用的空值【参考方案2】:您可以使用compact
将数据从控制器发送到视图。
return view('home')->compact('usercontact', 'qualification', profileimage');
您的代码可以重构如下。
public function showprofile($type=null, $id='id')
$usercontact = Usercontact::where('user_id',Auth::user()->id)->first();
$qualification = Userqualification::where('user_id',Auth::user()->id)->first();
$profileimage = Profileimage::where('user_id',Auth::user()->id)->select('id','user_id','profileimage')->first();
return view('home')->compact('usercontact', 'qualification', 'profileimage');
根据约定注意代码中的 Userqualification 模型名称。尝试向您的模型添加关系以使您的查询更容易。
【讨论】:
【参考方案3】:试试这个样式发送数据到视图
return view('home',['Usercontact'=>$usercontact,'Qualification'=>$qualification,'Profileimage'=>$profileimage]);
在视图中您将能够通过数组键获取数据
【讨论】:
以上是关于当一个或多个变量为空时,如何将多个变量发送到 laravel 中的视图的主要内容,如果未能解决你的问题,请参考以下文章
仅当变量不为空时,如何应用 Hasura `where` 过滤器?
Sql Server 2005中当两个整型字段中一个为空时如何比较大小?