【问题标题】:Cannot retrive data from the database with first() Laravel无法使用 first() Laravel 从数据库中检索数据
【发布时间】:2017-05-17 19:38:23
【问题描述】:

我的控制器:

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);` 

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

我不知道该怎么做。

【问题讨论】:

    标签: php laravel laravel-eloquent


    【解决方案1】:

    改变它:

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

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

    然后再试一次。

    解释:view() 的第二个参数是一个数组,我们可以在其中传递key => value 对。在视图上,我们可以使用view()的第二个参数数组中传递的key获取数据

    Reference

    【讨论】:

      【解决方案2】:

      您必须将数组传递给刀片。

      为此,您可以使用 Mayank Pandeyz 所说的语法,或者您可以使用compact(),这将使代码更简洁。

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

      【讨论】:

        【解决方案3】:

        感谢 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);
        

        成功了..

        谢谢你……

        【讨论】:

          【解决方案4】:

          您可以使用以下方法

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

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

          3)

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

          【讨论】:

            【解决方案5】:

            您可以在return view 中传递数据有两种方式:

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

            OR

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

            【讨论】:

            • 这种方式会给出错误提示 Undefined variable: notify 因为我从控制器传递到视图的值是 @MayankPandeyz 所述的 2 种不同类型。所以在这种情况下,我必须做类似return view('Notification.notification_application', array('userdetails' =&gt; $userdetails), $dataList);
            猜你喜欢
            • 2013-05-15
            • 2017-08-27
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-04-20
            相关资源
            最近更新 更多