Я пытаюсь автоматически загружать модели в 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автоматически загружает модель.