【发布时间】: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->name中删除$ -
当我调用 $pizza->name 时出现以下错误:尝试获取非对象的属性“名称”
-
将
dump($pizza);放入循环中(删除所有其他内容),这样您就可以看到每次迭代中的变量类型。此外,在@foreach之前,您可以设置@if($pizzas->isNotEmpty())。如果集合不可迭代,则跳过循环。