【问题标题】:Eloquent model object not recognized_ laravel course excerice雄辩的模型对象无法识别 laravel 课程练习
【发布时间】:2021-01-30 13:01:36
【问题描述】:

在学习有关 Laravel 的在线课程后,我被卡住了,我看不出我做错了什么。

谁能看到我做错了什么? 我的项目中有以下代码:

web.php

Route::get('/', function () {
return view('welcome');
});
 
Route::get('/pizzas', 'PizzaController@index');
Route::get('/pizzas/{id}','PizzaController@show');

Pizza.php

namespace App\Models;
 
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
 
class Pizza extends Model
{
use HasFactory;
// protected $tabel = 'pizzas';
}

PizzaController.php:

namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use App\Models\Pizza;
 
class PizzaController extends Controller
{
//
public function index(){
    
    $pizzas = Pizza::all();
    
    return view('pizzas', [
        'pizzas'=>$pizzas,
        ]);
 
}
 
public function show($id){
    return view('details', ['id'=> $id]);
}

 

Pizza.blade.php:

<h1> Pizza List </h1>              
      
@foreach($pizzas as $pizza)
   <div>
    {{ $pizza->$name }}    // HERE IS WHERE THE ERROR OCCURS
   </div> 
@endforeach 
 

错误信息:

ErrorException 
Trying to get property '' of non-object (View:  D:\xxxxxxxxxxx\laravel\pizzahouse1\resources\views\pizzas.blade.php) 
http://localhost:8000/pizzas
     
error in line 21

【问题讨论】:

  • 试试 Pizza::with([])->get();而是在控制器中
  • 从名称属性$pizza-&gt;name中删除$
  • 当我调用 $pizza->name 时出现以下错误:尝试获取非对象的属性“名称”
  • dump($pizza); 放入循环中(删除所有其他内容),这样您就可以看到每次迭代中的变量类型。此外,在@foreach 之前,您可以设置@if($pizzas-&gt;isNotEmpty())。如果集合不可迭代,则跳过循环。

标签: laravel eloquent model


【解决方案1】:
<h1> Pizza List </h1>              
      
@foreach($pizzas as $pizza)
   <div>
    {{ $pizza->$name }}    // HERE IS WHERE THE ERROR OCCURS
   </div> 
@endforeach 

你为什么使用“$name”? 错误说,

您正在调用 $pizza 中不存在的属性。

应该是这样的:

{{ $pizza->name }}    

如果问题仍然存在,只是:

dd($pizza);

然后查看结果并调用属性。 希望它会有所帮助。

【讨论】:

  • 我使用 $name,因为教程是这样做的.... dd($pizza);生成输出:dd($pizza); dd($披萨); dd($披萨); (我在数据库中有三条记录...)当我这样做时:{{ $pizza->name }} 我收到错误:尝试获取非对象的属性“名称”
  • 使用这个 .再具体一点 。 您必须使用 php 标签在刀片中执行 php 代码。 @M.Koops
  • 好的,谢谢 Shifat。现在我得到:数组:2 [▼“类型”=>“夏威夷”“基地”=>“棋子壳”]
  • 有点奇怪,因为我有 3 条记录,只显示第一个。
  • @M.Koops 使用 查看所有数据
猜你喜欢
  • 2021-08-11
  • 1970-01-01
  • 1970-01-01
  • 2015-08-15
  • 1970-01-01
  • 2019-02-12
  • 1970-01-01
  • 1970-01-01
  • 2021-06-01
相关资源
最近更新 更多