我在尝试获取Laravel中的列的属性时遇到问题

时间:2018-09-27 20:26:02

标签: php laravel phpmyadmin

我已经知道我将要解释的这个问题与其他问题类似。

Trying to get property of non-object

Trying to get property of non-object in laravel 5.4

Trying to get property of non-object in laravel 5.5

但是我的问题不是那些问题或另一个类似的问题。

我有一个有关“汽车销售”的网站,当我单击“查看更多详细信息...”按钮时,该页面上会显示一个表,其中包含所有客户以及每个客户购买的汽车数量。该网页显示有关所选客户的更多详细信息。

在该页面上,我还有另一个表格,显示客户购买的汽车数量,日期,型号和汽车品牌,以及一个按钮,您可以添加客户购买的新汽车。 / p>

  

注意:我以管理员身份登录此网站。

当我单击此按钮添加新车时。我得到这个错误。

  

ErrorException(E_ERROR)    尝试获取非对象的属性“ id”(查看:C:\ xampp \ htdocs \ car-    shopping \ resources \ views \ CarShop \ ShowCustomerCarsDetails.blade.php)

此错误消息强调的代码行是:

<td>{{$customer->id}}</td>

这是我单击上一页按钮(例如:查看更多详细信息...)后显示的客户详细信息表。在页面ShowCustomerCarDetails.blade.php之前。

<!--ShowCustomerCarDetails.blade.php-->

<tbody> 
  <tr>


    <td>{{$customer->id}}</td> <!--THIS LINE-->


    <td>{{$customer->name}}</td>
    <td>{{$customer->address}}</td>
    <td>{{$customer->phoneNumber}}</td>

        @if($car->id == $customer->car_id)
            <td>{{$car->model}}</td>
        @endif           
    </tr>
</tbody>
  

注意: 'ShowCustomerCarDetails.blade.php'的前一页称为'ShowCustomersAndCars_index.blade.php'我有一个表格,显示所有客户及其购买的汽车数量,在此页面中,我有一个名为'查看更多详细信息...'的按钮,该按钮重定向到' ShowCustomerCarDetails.blade.php'

这是客户购买的台式车的车体。

<!--At the end of the website 
ShowCustomerCarDetails.blade.php -->

<thead>
  <tr>
     <th>CAR NAME</th>
     <th>CAR MODEL</th>
     <th>CAR PRICE</th>
     <th>CAR YEAR</th>
     <th>PURCHASE DATE</th>
     <th>OWNER</th>
    </tr>

</thead>

<tbody>
    @foreach($date as $carDateBuy)
        @if($customer->id == $carDateBuy->customer_id)
            <tr>
                <td>{{$car->name}}</td>             
                <td>{{$car->model}}</td>
                <td>{{$car->price}}</td>
                <td>{{$car->year}}</td>
                <td>{{$carDateBuy->date}}</td>
                <td>{{$carDateBuy->customer_name}}</td>
            </tr>
        @endif
    @endforeach
</tbody>
  

注意:表格中的日期,当客户购买汽车时,表格会自动填充客户的信息。

以及用于在同一网页上添加新车的按钮。

<div>
  <a href="{{route('NewCars')}}">
    <input type="button" name="AddCars" value="ADD NEW CAR">
  </a>
</div>

以及 web.php

中的路由
Route::get('ListCustomersCar/NewCars',['as' => 'NewCars', 'uses' => 'CustomerCarController@createNewCars']); 

CustomerCarController 方法createNewCars()

public function createNewCars(){

  return view('customer.NewCars');
}

有关更多详细信息,我添加了表格及其关系:

Picture1_Car-Customer

Picture2_Customer-Date1

Picture3_Customer-Date2

我在网站上做错了什么?如果我缺少什么,我将更新此问题。谢谢!

2 个答案:

答案 0 :(得分:2)

您必须将包含您的视图将使用的变量的数组传递给view()函数,例如:

return view('customer.newCars', 
    [
        'customer' => $customer,
        'car' => $car,
        ...
    ]
);

如果您想传递雄辩的对象,请尝试:

return view('customer.newCars', compact($customer, $car, ...));

答案 1 :(得分:1)

如果错误是

  

ShowCustomerCarDetails.blade.php

然后问题出在控制器上(现在暂时将此控制器称为CustomerController.php)和功能(如showCustomerCarDetails()正在返回上面的视图文件

因此,可能的解决方案是检查控制器CustomerController.php和功能showCustomerCarDetails()。 请在下面找到调试问题的清单,

  1. 首先,请转储$customer,以检查是否在showCustomerCarDetails函数中正确获取了dd($customer)变量。在这里,我假设您知道如何从客户模型中获取$customer变量。就像$customer=Customer::findOrFail($id)一样简单,$id参数是通过URL传递给控制器​​和函数的参数。
  2. 现在,如果您要从数据库中获取客户数据,则使用您的首选方法将$customer这个变量与视图文件一起发送, 例如return view('CarShop.ShowCustomerCarsDetails', compact($customer))

我希望它可以解决问题,如有任何疑问,请随时提出:)