Laravel - Автоматически загружать отношения Auth :: user () - PullRequest
1 голос
/ 09 июля 2020

Мне было интересно, можно ли каким-то образом автоматически загружать все Auth::user() отношения.

Auth::user() возвращает экземпляр моего App\Models\Auth\Usuario.php, а внутри Usuario.php класса у меня есть отношения с другими моделями .

То, как я сейчас это делаю, вручную загружает отношения с $user->load('relation'), но мне нужно делать это в каждом запросе.

Я думал сделать что-то подобное в своей базе Контроллер:

public function __construct()
{
    $user = Auth::user();
    $this->relation = $user->load('relation');
}

Но это не совсем то, что я ищу.

Есть другой / лучший способ загрузить все отношения классов Auth::user()? Как промежуточное ПО или что-то в этом роде?

Ответы [ 2 ]

3 голосов
/ 09 июля 2020

Вы можете использовать свойство $with в своей модели, чтобы объявить отношения, которые всегда должны быть загружены.

Из документов :

Иногда вы можете захотеть всегда загружать некоторые отношения при извлечении модели. Чтобы выполнить sh это, вы можете определить свойство $ with в модели:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Book extends Model
{
    /**
     * The relationships that should always be loaded.
     *
     * @var array
     */
    protected $with = ['author'];

    /**
     * Get the author that wrote the book.
     */
    public function author()
    {
        return $this->belongsTo('App\Author');
    }
}
0 голосов
/ 09 июля 2020

Я не уверен, почему вы вручную загружаете отношения, это должно быть сделано в рамках вашей модели?

В любом случае, чтобы ответить на ваш вопрос, я использую помощники. php, которые я добавляю в composer автозагрузку : -

"autoload": {
    "psr-4": {
        "App\\": "app/"
    },
    "classmap": [
        "database/seeds",
        "database/factories"
    ],
    "files": [
        "app/helpers.php"
    ]

в этом файле помощников вы можете пометить настраиваемые глобальные методы: -

function current_user()
{
    return auth()->user();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...