2014-12-31 3 views
0

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

enter image description here

Отношения на created_by работ, однако completed_by не происходит, несмотря на это ссылки на одни и те же данные.

public function completed_by_user() 
{ 
    return $this->hasOne('User', 'id', 'completed_by'); 
} 

public function user() 
{ 
    return $this->hasOne('User', 'id', 'created_by'); 
} 

Выше отношения внутри моей модели которого $object->user возвращает значение, однако $object->completed_by_user не делает.

Я пропустил что-то совершенно глупое?

Спасибо и счастливого нового года :)

+0

Если вы измените '' created_by' к completed_by' в 'user' отношения, она все еще работает? – lukasgeiter

+0

И не следует использовать 'return $ this-> hasOne ('User', 'completed_by')'? – lukasgeiter

+0

Изменение 'created_by' /' completed_by' и удаление 'id' не помогло :(- Такая же проблема. – Gavin

ответ

1

Вы должны изменить название отношения с completed_by_user до completedByUser

Причина в том, что Laravel преобразует динамическое имя свойства в случай верблюда.

Так что, когда вы пытаетесь использовать $user->completed_by_user он ищет функции отношения completedByUser

+0

Хорошо заметили! Я удалил свою изворотливую «загрузку» и перешел на предложенную, и она работала в первый раз. Спасибо! Приятного нового года. – Gavin

+0

Добро пожаловать в наш новый год! – lukasgeiter

0

Ваши отношения неправильны, поменять ключи:

public function completed_by_user() 
{ 
    return $this->hasOne('User', 'completed_by', 'id'); // id may be ommited 
} 

public function user() 
{ 
    return $this->hasOne('User', 'created_by', 'id'); // the same here 
} 
+0

'id' обязательно должен быть опущен. Таким образом, он также будет адаптирован, если первичный ключ класса' User' будет изменен. – lukasgeiter

+0

@lukasgeiter :) true, он будет адаптироваться. Однако он не относится к классу 'User', а принадлежит модели (той, где определено отношение). –

+0

Правда, но я уверен, что собственная модель тоже «Пользователь», так как это рекурсивный внешний ключ в базе данных ...;) – lukasgeiter

0

кажется, что, называя

{{ $question->load('completed_by_user') }} 

, что он начал работать правильно .. .

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