【问题标题】:I have a problem with try to get a property of a column in Laravel我在尝试获取 Laravel 中列的属性时遇到问题
【发布时间】:2019-03-03 19:40:57
【问题描述】:

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

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

但我的问题与这些问题或另一个类似问题不完全相同。

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

在那个网页上,我有另一个表格,其中显示了客户购买的汽车数量、日期、型号和汽车品牌,还有一个按钮,您可以添加客户购买的新车。

注意:我以管理员身份进入此网站。

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

错误异常 (E_ERROR) 试图获取非对象的属性“id”(查看:C:\xampp\htdocs\car- 购物\资源\视图\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

我在我的网站上做错了什么?如果我遗漏了什么,我会更新这个问题。谢谢!

【问题讨论】:

  • 除了视图之外,您不会从控制器返回任何内容。在刀片文件中没有使用任何变量,您希望它如何工作?
  • 您的 $customer 包含什么?做一个 print_r($customer);

标签: php laravel phpmyadmin


【解决方案1】:

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

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

如果你想传递雄辩的对象,试试:

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

【讨论】:

  • 返回这些参数的视图后问题依旧,怎么办?
  • 不行,可能是什么问题?,代码行是一样的。 &lt;td&gt;{{$customer-&gt;id}}&lt;/td&gt; 这是网站向我显示的错误行。
【解决方案2】:

如果错误在

ShowCustomerCarDetails.blade.php

那么问题出在控制器(我们暂时称这个控制器为CustomerController.php)和函数(如showCustomerCarDetails()返回上述视图文件

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

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

我希望它能解决问题,如有任何疑问,请不要犹豫:)

【讨论】:

  • 这行不通。我在showNewCars 方法中做到了这一点,我这样称呼这个方法。 public function showNewCars($id){ $customer = Customer::findOrFail($id); dd($customer); //This line is ok? return view('customer.NewCars', compact($customer)); }
  • 是的,运行上面的代码是正确的,当你点击 url 时,你得到了什么?你没有得到客户模型吗?
  • 对不起,我刚刚注意到了。方法不是show 我尝试为表 Cars 创建新的 Cars,这就是按钮被称为 Add new Cars 的原因。我使用的方法是create 我调用了这个方法createNewCars 并在web.php 中创建了相应的路由。但问题还没有解决。 ://
  • 终于解决了我的问题,谢谢!!我做了一个新的控制器,并创建了新的路线,而且效果很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-06
  • 1970-01-01
  • 2021-02-24
  • 2020-11-09
  • 2021-12-02
  • 2018-03-07
相关资源
最近更新 更多