Ответ 1
Просто для потомков... иначе вы можете это сделать:
Article::with('category')->whereIn('id', $ids)->get();
Это должно быть лучше (более результативно), поскольку он оставляет запрос менеджеру базы данных
Почему это не работает?
Article::with('category')->find($ids)
Я получил Array для исключения преобразования строк.
Но если я разделил запрос на 2 части следующим образом:
$articles = Article::with('category')
и
$articles = $articles->find($ids)
Я не получил никакого исключения, и результат правильный.
Просто для потомков... иначе вы можете это сделать:
Article::with('category')->whereIn('id', $ids)->get();
Это должно быть лучше (более результативно), поскольку он оставляет запрос менеджеру базы данных
Try:
Article::with('category')->get()->find($ids);
Вам нужно сначала получить статьи, прежде чем вы сможете вызвать find(), я считаю.
Предупреждение. Это извлекает каждую статью из базы данных и загружает их все в память, а затем выбирает только одну из всех этих данных и возвращает ее. Вероятно, это не так, как вы хотели бы справиться с этой проблемой.
Это даст вам результаты, основанные на массиве идентификаторов в Laravel 4
Article::whereIn('id', $ids)->with('category')->get();
Создать объект и установить его свойства с помощью отношений
например, код в вашем контроллере или службе
$article = new Article;
$article = $article->find($id);
$result->article = $article;
$result->article->category = $article->category;
return response()->json($result);
Код в вашей модели
public function category() {
return $this->hasOne('App\Category');
}