У меня есть следующие задачи МодельLaravel 4: Weird поведение на магически называется belongsTo отношений
class Task extends Eloquent {
public function user()
{
return $this->belongsTo('User');
}
}
Когда я зову:
$task = Task::with('user')->first();
я получаю следующий ожидаемый результат:
{
id : 10,
user_id : 20,
user : {
id : 20
}
}
И следующий ожидаемый запрос:
select `tasks`.* from `tasks` limit 1;
select * from `users` where `users`.`id` in (20);
Однако, когда я установил свои отношения в магическом образом, belongsTo отношения изломов:
class Task extends Eloquent {
public function __call($name, $arguments)
{
if ($name === 'user')
return $this->belongsTo('User');
return parent::__call($name, $arguments);
}
}
Я получаю сломанную результат:
{
id : 10,
user_id : 20,
user : null // USER IS MISSING!
}
И следующий сломанный Query-журнал :
select `tasks`.* from `tasks` limit 1;
select * from `users` where `users`.`id` in (0); // NOTE THE 0 INSTEAD OF 20
У меня нет ошибок. Я пробовал то же самое с belongsToMany
, но это отлично работает.
По какой-то причине '20' не переходит к отношениям, связанным с этим. Поэтому я ожидаю, что __call() запускает новый экземпляр запроса, но я не понимаю, почему?
Я заработал время, когда __call() уволен, но, кроме метода 'user', он вообще не срабатывает. Так что, насколько мне известно, это не может быть проблемой.