Подтвердить что ты не робот

Laravel Красноречивый и найти

Почему это не работает?

Article::with('category')->find($ids)

Я получил Array для исключения преобразования строк.

Но если я разделил запрос на 2 части следующим образом:

$articles = Article::with('category')

и

$articles = $articles->find($ids)

Я не получил никакого исключения, и результат правильный.

4b9b3361

Ответ 1

Просто для потомков... иначе вы можете это сделать:

Article::with('category')->whereIn('id', $ids)->get();

Это должно быть лучше (более результативно), поскольку он оставляет запрос менеджеру базы данных

Ответ 2

Try:

Article::with('category')->get()->find($ids);

Вам нужно сначала получить статьи, прежде чем вы сможете вызвать find(), я считаю.

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

Ответ 3

Это даст вам результаты, основанные на массиве идентификаторов в Laravel 4

Article::whereIn('id', $ids)->with('category')->get();

Ответ 4

Создать объект и установить его свойства с помощью отношений

например, код в вашем контроллере или службе

$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');
}