2016-07-01 3 views
1

Я пытаюсь работать, если я сделал что-то правильно. У меня есть модель отдела. В отделе может быть много DepartmentObjectives. Я также создал инверсию. Так что это отношения прекрасные.Отношения и запросы связанных моделей

У меня тогда есть Пользовательская модель. Пользователь может иметь множество пользовательских целей, это настроено отлично. В моей user_objectives таблице однако, есть ссылка на отдел Objective

$table->integer('department_objectives_id')->unsigned()->default(0); 
$table->foreign('department_objectives_id')->references('id')->on('department_objectives')->onDelete('cascade'); 

Так цель пользователя связана с задачей отдела. Нужно ли это указывать в моих моделях? Поэтому, если моя модель UserObjectives имеет

class UserObjectives extends Model 
{ 
    use SoftDeletes; 

    protected $table = 'user_objectives'; 
    protected $guarded = []; 

    public function user() 
    { 
     return $this->belongsTo('App\User'); 
    } 

    public function departmentObjectives() 
    { 
     return $this->belongsTo('App\DepartmentObjectives'); 
    } 
} 

По некоторым причинам это кажется немного странным. В любом случае, когда я создаю цель пользователя в настоящее время, выбирается цель отдела, и я храню идентификатор для цели отдела. Поэтому в моем представлении я могу сделать что-то вроде этого

{{dd($objective->department_objectives_id)}} 

И это будет показывать идентификатор цели отдела, к которому это относится. Как я могу получить название цели отдела?

Любой adivce оценил

Благодаря

+0

Структура ваших таблиц не очень ясна, но из того, что я вижу, я думаю, что вам нужно много-много отношений. Если ** user_objectives ** - ваша сводная таблица, вам не нужна модель * UserObjectives *, Laravel автоматически создаст связь. Возможно, вы захотите проверить документ для многих и многих отношений. Https://laravel.com/docs/5.1/eloquent-relationships#many-to-many – TheFallen

+0

Цели, общие для пользователей и отделов? Ваш случай похож на систему тегов, в которой теги могут быть добавлены к видео и изображениям (2 разных модели)? – geoandri

+0

Вид как система маркировки. Отдел может устанавливать цели, которые хочет достичь отдел. Когда пользователь создает свою собственную индивидуальную цель, им необходимо связать ее с задачей отдела. –

ответ

1

Изменить эту

{{dd($objective->department_objectives_id)}} 

на ваш взгляд, можно назвать

{{ $objective->departmentObjectives->name }} 

Предполагая, что вы назвали имя имя поля.

+0

Вызывая $ object-> departmentObjectives, вы ссылаетесь на объект (ы), который вы возвращаете из отношения deparmentObjectives() –

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