Size: a a a

Laravel Framework Russian Community

2020 August 19

А

Артём in Laravel Framework Russian Community
Евгений
у меня есть варианты, типа использовать foreach и пройтись по каждому изображению валидатором, но может есть что-то получше
У тебя два вопроса на самом деле. Как провалидировать несколько изображений разом и как их потом сохранить.
источник

А

Артём in Laravel Framework Russian Community
На первый ответ есть в документации — валидация элементов массива
источник

А

Артём in Laravel Framework Russian Community
На второй — да, foreach. Или array_map, array_walk, итерация коллекции, что угодно.
источник

EW

Evgeniy Wolf in Laravel Framework Russian Community
Коллеги, доброго времени суток! Подскажите пожалуйста, как правильно сделать выборку через Eloquent. Задача довольно примитивная. Есть таблица (модель) категорий, двухуровневой иерархии.

Таблица:
id, title, parent_id
1, "Категория 1", NULL
2, "Категория 2", NULL
3, "Категория 1-1", 1
4, "Категория 1-2", 1

Есть некоторые товары, выглядят примерно так:
id, title, category_id
1, "Товар 1", 3
2, "Товар 2", 3
3, "Товар 3", 3
(т.е. все товары принадлежат к категории "Категория 1-1")

Модель категории соотв. имеет две связи:
1. function nested() — вложенные (дочерние) категории
2. function products() — товары относящиеся к данной категории

Задача — выбрать только те категории, у которых есть подкатегории, которые содержат хотя бы 1 товар.

Пробовал по разному, в т.ч.:

Category::whereHas('nested', function($query) {
   $query->whereHas('products', function ($query) {
       // Тут не понятно что писать в данном случае. Как указать условие "количество > 0"?
   });
});

Category::whereHas('nested', function($query) {
   $query->has('products', '>', 0); // А так не работает, выбирает всё равно все категории
});

Подскажите пожалуйста, как это правильно реализовать?
источник

WW

Ww Ww in Laravel Framework Russian Community
Evgeniy Wolf
Коллеги, доброго времени суток! Подскажите пожалуйста, как правильно сделать выборку через Eloquent. Задача довольно примитивная. Есть таблица (модель) категорий, двухуровневой иерархии.

Таблица:
id, title, parent_id
1, "Категория 1", NULL
2, "Категория 2", NULL
3, "Категория 1-1", 1
4, "Категория 1-2", 1

Есть некоторые товары, выглядят примерно так:
id, title, category_id
1, "Товар 1", 3
2, "Товар 2", 3
3, "Товар 3", 3
(т.е. все товары принадлежат к категории "Категория 1-1")

Модель категории соотв. имеет две связи:
1. function nested() — вложенные (дочерние) категории
2. function products() — товары относящиеся к данной категории

Задача — выбрать только те категории, у которых есть подкатегории, которые содержат хотя бы 1 товар.

Пробовал по разному, в т.ч.:

Category::whereHas('nested', function($query) {
   $query->whereHas('products', function ($query) {
       // Тут не понятно что писать в данном случае. Как указать условие "количество > 0"?
   });
});

Category::whereHas('nested', function($query) {
   $query->has('products', '>', 0); // А так не работает, выбирает всё равно все категории
});

Подскажите пожалуйста, как это правильно реализовать?
М.б просто has('nested.products')
источник

EW

Evgeniy Wolf in Laravel Framework Russian Community
Ww Ww
М.б просто has('nested.products')
Не помогло... 😔
источник

D

Dymon in Laravel Framework Russian Community
Evgeniy Wolf
Коллеги, доброго времени суток! Подскажите пожалуйста, как правильно сделать выборку через Eloquent. Задача довольно примитивная. Есть таблица (модель) категорий, двухуровневой иерархии.

Таблица:
id, title, parent_id
1, "Категория 1", NULL
2, "Категория 2", NULL
3, "Категория 1-1", 1
4, "Категория 1-2", 1

Есть некоторые товары, выглядят примерно так:
id, title, category_id
1, "Товар 1", 3
2, "Товар 2", 3
3, "Товар 3", 3
(т.е. все товары принадлежат к категории "Категория 1-1")

Модель категории соотв. имеет две связи:
1. function nested() — вложенные (дочерние) категории
2. function products() — товары относящиеся к данной категории

Задача — выбрать только те категории, у которых есть подкатегории, которые содержат хотя бы 1 товар.

Пробовал по разному, в т.ч.:

Category::whereHas('nested', function($query) {
   $query->whereHas('products', function ($query) {
       // Тут не понятно что писать в данном случае. Как указать условие "количество > 0"?
   });
});

Category::whereHas('nested', function($query) {
   $query->has('products', '>', 0); // А так не работает, выбирает всё равно все категории
});

Подскажите пожалуйста, как это правильно реализовать?
для продукта просто has используй https://laravel.com/docs/7.x/eloquent-relationships#querying-relationship-existence
источник

B

Bat in Laravel Framework Russian Community
Evgeniy Wolf
Не помогло... 😔
Судя по доке должно, видимо вертела лара nested релейшены...

Nested has statements may also be constructed using "dot" notation. For example, you may retrieve all posts that have at least one comment and vote:

// Retrieve posts that have at least one comment with votes...
$posts = App\Post::has('comments.votes')->get();
источник

NL

Niko Las in Laravel Framework Russian Community
Подскажите, пожалуйста, почему $request->ip может возвращать пустую строку? В трастед прокси сейчас *
источник

SC

Sergey Chizhik in Laravel Framework Russian Community
Может $request->ip() ?
источник

NL

Niko Las in Laravel Framework Russian Community
Да это понятно.
источник

NL

Niko Las in Laravel Framework Russian Community
С настройками нджинкса что-то.
источник

SC

Sergey Chizhik in Laravel Framework Russian Community
Может быть
источник

EW

Evgeniy Wolf in Laravel Framework Russian Community
Category::has('nested.products', '>', 0)->get(); — попробовал так и условие > 0 — тоже убирал. Проблема в том, что категории верхнего уровня он выбирает вроде бы верно, а вот категории нижнего уровня, он выбирает почему-то все, в т.ч. и те, в которых товаров нет.
источник

B

Bat in Laravel Framework Russian Community
Niko Las
Подскажите, пожалуйста, почему $request->ip может возвращать пустую строку? В трастед прокси сейчас *
попробуй в настройках локейшена nginx
proxy_set_header X-Real-IP $remote_addr;
источник

NL

Niko Las in Laravel Framework Russian Community
Ага, оказалось всё проще.
источник

NL

Niko Las in Laravel Framework Russian Community
Лишний параметр стоял.
источник

NL

Niko Las in Laravel Framework Russian Community
Но спасибо )
источник

AK

Aknur Kassym in Laravel Framework Russian Community
Всем доброго времени суток. Возник такой вопрос: взаимодействовать с бд можно двумя способами 1) DB::table() и 2) создав ресурс и модель. Есть ли определенная разница между ними? И какой лучше использовать? (Или все равно?)
источник

А

Артём in Laravel Framework Russian Community
Aknur Kassym
Всем доброго времени суток. Возник такой вопрос: взаимодействовать с бд можно двумя способами 1) DB::table() и 2) создав ресурс и модель. Есть ли определенная разница между ними? И какой лучше использовать? (Или все равно?)
Документация что на этот счёт говорит?
источник