2015-07-09 3 views
2

всего лишь короткий вопрос, я новичок в Красноречиве и отношениях.Eloquent ORM optional Отношения

Я хочу, чтобы моя база данных была чистой, поэтому я создал User -Модель и Administrator -Модель.

Теперь я stucked с отношениями ... То, что я хочу сделать, это следующее:

На users -стол Я атрибут называется account_type.

Если один установлен на admin или administrator Я хочу, чтобы «реализовать» в Administrator -модели к User -модели.

Я делаю совершенно неправильный подход здесь или есть простое решение «ларавельного стиля» для этого?

+0

Вы можете легко использовать эти 2 модели с [глобальными областями] (http://laravel.com/docs/5.0/eloquent#global-scopes) - это отсутствует в документах 5.1. Оба будут ссылаться на одну и ту же таблицу, но каждый получит только 'account_type = 'admin'', а другой получит остальные (или, вернее, все). Вот как вы можете реализовать глобальные области в L5. Http://softonsofa.com/laravel-5-eloquent-global-scope-how-to/ –

+0

Приятная функция, но не подходит для меня, так как я хочу, чтобы база данных была чистой. Поэтому я не хочу, чтобы данные пользователя и администратора были связаны с той же таблицей. Спасибо, в любом случае! –

ответ

1

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

public function admin() 
{ 
    return $this->hasMany('Administrator'); 
} 

тогда

$users = User::whereHas('admin', function($q) { 
    $q->where('account_type', 'administrator'); // or admin 
})->get(); 

сделать belongsTo отношение в Администраторе, если вы хотите

ссылка: Eloquent ORM

+0

Сделал вещь, спасибо! –

Смежные вопросы