Укажите произвольное имя таблицы и задайте условие для модели |Laravel - PullRequest
0 голосов
/ 07 мая 2018

У меня есть таблица с именем 'users'. В этой таблице у меня есть поле "user_type" (скажем, значение 13 в качестве менеджера свойств). Теперь я создал новую модель Eloquent (скажем, «PropertyManager») и установил следующий член класса.

/**
 * The table associated with the model.
 *
 * @var string
 */
protected $table = 'users';

Теперь мой вопрос заключается в том, что я хочу установить условно основанное имя таблицы. Если я выполню запрос, подобный этому PropertyManager :: all (), то он должен вернуть всех пользователей, тип которых "13". Я не хочу устанавливать условие «где», иначе, если условие «где» является только решением, я думаю, что мне не нужно создавать отдельную модель Eloquent. Я могу сделать как пользователь :: где (---).

1 Ответ

0 голосов
/ 07 мая 2018

Быстро и грязно

Давайте воспользуемся наследством!

В вашей модели PropertyManager:

public function all()
{
    return User::where('user_type', '13')->get();
}

// Call with PropertyManager::all();

Это вызывает перегрузку модели Eloquent по умолчанию и возвращает всех пользователей, которые на самом деле являются менеджерами свойств.

Вероятно, лучше

Что более читабельно и, вероятно, приемлемо, так это добавление методов к вашей модели User, например:

class User
{
    // logic

    public static function getAllPropertyManagers()
    {
        return self::where('user_type', '13')->get();
    }
}

// Call with User::getAllPropertyManagers();

Поскольку в конечном итоге PropertyManager все еще являются пользователями, почему бы не добавить некоторые методы в модель User и не загрузить их таким образом?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...