Я пытаюсь автоматически загружать модели в laravel 9,
Я хочу использовать модели в своих блейд-файлах, но когда я использую модель, я должен импортировать ее, написав «use App\Models\User
», а после я могу написать «{{ User::all() }}
», но если я сначала не импортирую модель, это дает мне эту ошибку: « Class "User" not found
", поэтому я хочу написать "{{ User::all() }}
" без предварительного импорта модели (без написания этого: "use App\Models\User
") в файле блейда. Как я могу автоматически загрузить их?
См. stackoverflow.com/questions/28657276/… -- Что вам действительно нужно, так это псевдонимы, которые можно добавить в config/app.php
«Я хочу использовать модели в своих блейд-файлах» — соглашение MVC предполагает, что вам не следует использовать модели в представлениях. Поэтому, хотя вы можете добавить их в config/app.php
's 'alises' => [...]
для этого, пересмотрите то, чего вы пытаетесь достичь, и посмотрите, не более ли уместно использовать $users = User::all();
в контроллере, а затем передавать $users
в представление через view('example', ['users' => $users])
(или подобное; много параметры синтаксиса для этого)
Привет, я знаю, что вы пытаетесь упростить кодирование, но обратите внимание, что автозагрузка означает, что она загружается, даже если вы ее не использовали, поэтому ваше приложение использует больше ресурсов для каждого запроса.
@Чарли прав, не делайте псевдонимы для моделей в app.php
Как и во всех других версиях Laravel, например:
$query = User::with("posts");
$users = $query->get();
Где класс User
должен определить, что означает «сообщения», например:
use \App\Post;
// ...
public function posts()
{
return $this->hasMany(Post::class, 'user_id');
}
Обратите внимание, что выше я запрашиваю модель «Пользователь» и автоматически загружаю любую связанную модель «Пост».
ВТФ…………………..…..?
Вы можете вручную создавать псевдонимы в config/app.php
.
'aliases' => Facade::defaultAliases()->merge([
'User' => App\Models\User::class,
... your other models here
])->toArray(),
Это сделает User
доступным без необходимости вручную писать App\Models\User
каждый раз в представлении и везде.
Так же, как вы можете написать
use DB;
DB::table('users')->get();
вместо
use Illuminate\Support\Facades\DB;
DB::table('users')->get();
Вы сможете писать use User
вместо use App\Models\User
(хотя я не рекомендую вам этого делать).
use App\Models\User
автоматически загружает модель.