Php 当一个或多个变量为空时,如何向laravel中的视图发送多个变量

Php 当一个或多个变量为空时,如何向laravel中的视图发送多个变量,php,laravel,view,controller,eloquent,Php,Laravel,View,Controller,Eloquent,当新用户注册并重定向到配置文件页面时。所有这些$userconatact、$qualification和$profileimage变量均为空。主页设置为带有if(condition)的按钮,用于填写表单或向用户显示可用数据。共有三个表格,用户必须逐个填写这些表格。所有这些变量或其中一个变量都可以为null,但我仍然希望将null值发送给view。有没有办法让这种观点发生 class ProfileController extends Controller { public fun

当新用户注册并重定向到配置文件页面时。所有这些
$userconatact
$qualification
$profileimage
变量均为空。主页设置为带有
if(condition)
的按钮,用于填写表单或向用户显示可用数据。共有三个表格,用户必须逐个填写这些表格。所有这些变量或其中一个变量都可以为null,但我仍然希望将null值发送给view。有没有办法让这种观点发生

    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语句来简化操作。

1)使用compact,它会自动为您创建键值对

return view('home')->compact('usercontact','qualification','profileImage')
2) 下面是对代码的一些其他改进。您可以使用Auth facade访问登录用户

$usercontact = Auth::user();
3) 在您的用户模型上定义并通过此访问资格。这将返回一个集合

$qualification = $usercontact->qualifications;

您可以使用
compact
将数据从控制器发送到视图

returnview('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模型名称。尝试将关系添加到模型中,以简化查询。

尝试使用此样式将数据发送到视图

return view('home',['Usercontact'=>$usercontact,'Qualification'=>$qualification,'Profileimage'=>$profileimage]);

在视图中,您将能够通过数组键获取数据

my variables contain array and the compact返回无效的空值