无法使用first()Laravel从数据库中检索数据

时间:2017-05-13 09:26:45

标签: php laravel laravel-eloquent

我的控制器:

public function getNotificationApplication($user_id, $notification_id)
{
  $userdetails = Notification::with('user')->where(['user_id'=>$user_id])->first();
  $dataList = [];
  $dataList['notify'] = NotificationTypeA::with('notification')->where(['notification_id'=>$notification_id])->get();

  return view('Notification.notification_application', $userdetails, $dataList);
}

我的路线:

Route::get('/notification_application/{user_id}/{notification_id}', 'NotificationController@getNotificationApplication')->name('show.notification_application');

我的观点:

@foreach ($userdetails as $userdetail)
  {{$userdetail->storage_location}}
@endforeach

当我从数据库中检索数据时,我得到了一个

  

未定义的变量:userdetails

我可以检索我作为数组传递的其他变量($ data),我可以像这样显示它们

@foreach ($notify as $notification)
  <tr>
      <td>{{ $notification->item_name }} </td>
      <td>{{ $notification->risk_level }}</td>
      <td>{{ $notification->quantity }}</td>
      <td>{{ $notification->volume }}</td>
      <td></td>
  </tr>
@endforeach

当我使用

   `dd($userdetails);` 

在控制器中我得到了正确的数据。

我不知道如何做到这一点。

5 个答案:

答案 0 :(得分:2)

改变它:

return view('Notification.notification_application', $userdetails, $dataList);

return view('Notification.notification_application', array('userdetails' => $userdetails, 'dataList' => $dataList));

再试一次。

说明: view()的第二个参数是一个数组,我们可以在其中传递key =&gt; {{一对。在视图中,我们可以使用value

的第二个参数数组中传递的key来获取数据

Reference

答案 1 :(得分:1)

您必须将阵列传递给刀片。

为此,您可以使用Mayank Pandeyz所说的语法,或者您可以使用compact()来使代码更清晰。

return view('Notification.notification_application', compact('userdetails' ,'dataList'));

答案 2 :(得分:1)

感谢Parth Vora和Mayank Pandeyz

我结合他们的两个答案解决了我的问题。

首先,我传递了2个参数,其中一个是数组,另一个只是表格的第一行。

所以我必须在控制器中稍作修改

$userdetails['userdetails'] = Notification::with('user')->where(['user_id'=>$user_id])->first();

然后返回

return view('Notification.notification_application', array('userdetails' => $userdetails), $dataList);

这就是诀窍..

谢谢......

答案 3 :(得分:1)

您可以使用以下方法

1)return view('Notification.notification_application', compact('userdetails' ,'dataList'));

2)return view('Notification.notification_application', ['userdetails' => $userdetails , 'dataList' => $dataList]);

3)

return view('Notification.notification_application')
                ->with('userdetails', $userdetails)
                ->with('dataList, $dataList);

答案 4 :(得分:0)

您可以通过两种方式传递return view中的数据:

 return view('Notification.notification_application', compact('userdetails','dataList'));

OR

return view('Notification.notification_application',
                    [
                      'userdetails'=>$userdetails,
                      'dataList'=>$dataList
                    ]);