在 laravel 控制器中调用模型需通过 use 引入模型类,再以静态方法(如 user::all())或依赖注入(如 show(user $user))方式使用;blade 标签仅用于视图,控制器中不可使用。

1. 确保模型已正确定义并放在 app/Models 目录下
比如你有一个 User 模型:
app/Models/User.php
它应继承 Illuminate\Database\Eloquent\Model,且命名空间正确:
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class User extends Model { }
2. 在控制器中引入模型(use 语句)
在控制器顶部写 use,告诉 PHP 这个类在哪:
namespace App\Http\Controllers;
use App\Models\User; // ← 关键:引入模型
use Illuminate\Http\Request;
class UserController extends Controller
{
public function index()
{
$users = User::all(); // ✅ 正确调用
return view('users.index', compact('users'));
}
}
3. 调用方式不止一种,常用有这些
-
静态调用:如
User::find(1)、User::where('active', 1)->get() - 依赖注入(推荐):在方法参数中直接类型提示模型,Laravel 自动解析
public function show(User $user) // ← 自动按 ID 查询并注入
{
return view('users.show', compact('user'));
}
4. 注意别混淆 Blade 模板标签
你在 Blade 模板(.blade.php)里看到的 {{ $user->name }} 是输出数据用的模板语法,不是控制器里的 PHP 代码。控制器里写的是纯 PHP,不需要任何特殊标签。
错误示例(控制器里不能这么写):<?php echo $user->name; ?> ← 不需要,也不该混用模板写法{{ $user->name }} ← 在控制器里会报错,这是 Blade 的语法,只在视图中有效
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











