Как получить аналогичный результат из -> get () и -> find ($ id) в Laravel - PullRequest
0 голосов
/ 28 сентября 2019

У меня есть список категорий.Если пользователь щелкнет по категории, пользователь увидит список пользователей, относящихся к этой категории, таблица пользователей содержит поле category_id.Для этого я использую приведенный ниже код в контроллере.

$category = Category::with('users')->find($id);

Но есть ссылка All Category, если пользователь, щелкнув по этой ссылке, увидит всех пользователей всех категорий. Я использую приведенный ниже код вКонтроллер для этого.

$category = Category::with('users')->get();

И пользователи одной категории, и все категории используют один и тот же вид (файл HTML).Нумерация страниц необходима как пользователям одной категории, так и всей категории.

Мне нужен аналогичный результат из ->get() и ->find($id), чтобы отобразить результат в одном и том же представлении (файл HTML).

Как я могу это сделать?

Ответы [ 3 ]

1 голос
/ 28 сентября 2019

Вы можете использовать этот способ:

$category = Category::with('users')->where('id', $id)->get();

Или сделать пустой объект:

$obj = collect();

Затем нажмите на эту коллекцию:

$category = Category::with('users')->find($id);
$object->push($category)
1 голос
/ 29 сентября 2019

Дело в том, что find возвращает один row как экземпляр Model, в то время как get возвращает collection экземпляров Model.Если вы внимательно прочитаете документацию, вы найдете ее.Таким образом, одно решение - после использования find, push в пустой коллекции.Другой ответ показал следующее:

Так как вам нужно нумерация страниц в обеих целях,

Вместо использования Category::with('users')->find($id);, используйте

Category::with('users')->where('id', $id)->paginate();

Ивместо Category::with('users')->get(); запроса используйте

Category::with('users')->paginate();
1 голос
/ 28 сентября 2019

Таким образом, последний возвращает коллекцию, в то время как первый возвращает только экземпляр категории, поэтому у вас есть пара опций, но вы не уверены, сработает ли это:

$category = Category::with('users')->find([$id]);

Передача массива в find возвращает коллекцию, в которую я верю, или попробуйте вместо этого:

$category = Category::with('users')->where('id', $id)->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...