Size: a a a

2021 May 17

АІ

Андрій Іванюра... in Laravel UA
Товариство, допоможіть розібратися, будь ласка, бо застряг надовго.

Є наступні таблиці в базі:
subjects: id, name, type
groups: id, name
users: id, name, parentname, surname та ще кілька полів

Є також форма в blade, в якій обирається зі списку один subject, а потім передається в контролер його id по ajax, і залежно від типу subject (groups, users) потрібно віддати назад список або з таблиці groups, або з users.

Із groups проблем немає - роблю виборку із бази і вкорочую за допомогою pluck:

Group::pluck("name","id");

А тоді в blade приймаю отак:

$.each(target, function(id, name){
   $(".subject_target").append('<option value="'+ id +'">' + name + '</option>');
});

Проблеми починаються, коли в select обирається users. Мені потрібно передати з цієї таблиці тільки три поля - id, name та surname. У цьому випадку pluck не підходить, пробую отак:

$users = User::get();
$target = $users->map(function ($user) {
   return collect($user->toArray())
   ->only(['id', 'name', 'surname'])
   ->all();
});

Тепер, власне, запитання. Як я маю прийняти ці дані в blade?

У мене два варіанти. Або в контролері якось об'єднати name і surname в одне поле, і за допомогою pluck вивести в такому ж вигляді, як і groups (мені важливо, щоб у select id заносилося у value, а name + surname показувалося у списку), або приймати ajax'ом дані як є, а потім з'єднувати name та surname на місці. Але з жодним варіантом не можу сам справитися. Допоможіть, бо вже півтисячі сивих волосків з'явилося, а результату нуль 😂
источник

MR

Maxim Rebitskiy in Laravel UA
А чого просто в гет не передати список полів які потрібно отримати. Навіщо ця ккча непотрібного коду зверху?
источник

АІ

Андрій Іванюра... in Laravel UA
Можна детальніше?
источник

D

Dymon in Laravel UA
как вариант можно сделать из юзеров такой же массив как и для остальных
$users->mapWithKeys(function ($user) {
       return [$user->id =>$user->name .' '.$user->surmane];
   })->toArray();
источник

АІ

Андрій Іванюра... in Laravel UA
Ідеально виглядає, але ось як виглядає таблиця groups у консолі:

{1: "Group 11", 2: "Group 12"}
   1: "11"
   2: "12"

А ось так users:

(2) [{...}, {...}]
   0: {id: 7, name: "Name 1", parentname: null, surname: "Surname 1", ...}
   0: {id: 8, name: "Name 2", parentname: null, surname: "Surname 2", ...}

Це якщо віддавати в контролері отак:

$target = User::get();
$target->mapWithKeys(function ($user) {
   return [$user->id =>$user->name .' '.$user->surmane];
})->toArray();

А з попереднім варіантом

$users = User::get();
$target = $users->map(function ($user) {
   return collect($user->toArray())
   ->only(['id', 'name', 'surname'])
   ->all();
});

масив виглядає отак:

(2) [{...}, {...}]
   0: {id: 7, name: "Name 1", surname: "Surname 1"}
   0: {id: 8, name: "Name 2", surname: "Surname 2"}

Тобто те ж саме, тільки без зайвих полів. Як тоді цей масив вивести в select?
источник

D

Dymon in Laravel UA
точно?
после
$target = User::get();
$target->mapWithKeys(function ($user) {
   return [$user->id =>$user->name .' '.$user->surmane];
})->toArray();
в таргет должно быть
{7: "Name 1 Surname 1", 8: "Name 2 Surname 2"}
но никак не может быть
(2) [{...}, {...}]
   0: {id: 7, name: "Name 1", parentname: null, surname: "Surname 1", ...}
   0: {id: 8, name: "Name 2", parentname: null, surname: "Surname 2", ...}
источник

D

Dymon in Laravel UA
кто то что слышал про такое?
https://teletype.in/@ebanoe_it/mVVZJ3eR54D
источник

АІ

Андрій Іванюра... in Laravel UA
контролер
источник

АІ

Андрій Іванюра... in Laravel UA
blade
источник

АІ

Андрій Іванюра... in Laravel UA
users в консолі
источник

АІ

Андрій Іванюра... in Laravel UA
groups в консолі
источник

D

Dymon in Laravel UA
ты результат не используешь. Нужно $target = $target->mapWithKeys(......
источник

D

Dymon in Laravel UA
еще ошибка там где role('Pupil') так не будет работать. Вроде как тебе нужен whereHas
источник

АІ

Андрій Іванюра... in Laravel UA
та ні, з цим працює - це розширення laravel-permission
источник

АІ

Андрій Іванюра... in Laravel UA
а з цим вийшло
источник

АІ

Андрій Іванюра... in Laravel UA
щиро дякую! йду виривати сиві волоски 😂
источник

D

Dymon in Laravel UA
ну хз тогда, но имхо я не понимаю что это и зачем
источник

АІ

Андрій Іванюра... in Laravel UA
в проекті є багато користувачів з різними ролями, і я таким чином вибираю з них тільки учнів. розширення просто мега-суперове. хоча решту функціоналу я прописую сам, не дуже люблю розширення із купою зайвих фішок
источник

АІ

Андрій Іванюра... in Laravel UA
ви мені дуже допомогли, а то я надовго застряг із цим масивом. ще раз величезне спасибі!
источник

YH

Yurii Horbal in Laravel UA
источник