Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 13.04.2017 16:13:48

Валидация только с 1й главной картинкой

Подскажите,  в laravel 5.4
в таблице client_image может быть только одна строка с

is_main== "Y"

Поэтому условие в валидации:

'is_main'     => 'in:Y,N|unique:client_image,is_main,NULL,client_id,client_id,' . $client_id,

не подходит так как нужно любое кол-во

is_main== "N"

А как правильно и можно ли примерчик?

Спасибо !

Не в сети

#2 14.04.2017 06:56:21

Re: Валидация только с 1й главной картинкой

Писать свой вариант правила валидации

Не в сети

#3 14.04.2017 09:19:20

Re: Валидация только с 1й главной картинкой

DBR пишет:

Писать свой вариант правила валидации

Это Custom Validation ?
А можно ли ссылочку на что-нить похожее?

Не в сети

#4 14.04.2017 09:45:45

Re: Валидация только с 1й главной картинкой

https://laravel.com/docs/5.4/validation#custom-validation-rules
http://itsolutionstuff.com/post/laravel-5-create-custom-validation-rule-exampleexample.html

Если кастомных правил валидации много, то лучше сделать отдельный сервис-провайдер и/или сделать отдельные класы под свои валидаторы

Не в сети

#5 14.04.2017 09:52:11

Re: Валидация только с 1й главной картинкой

Внутри кастомной валидации

— сперва проверяешь допустимое ли значение, допустимых у тебя всего два — если нет, то false
— если N — то true
— если Y, то считаешь сколько картинок для этого клиента с записью Y (кроме текущей), если больше 0, то false иначе true

Но вообще я бы просто поменял логику и сделал без валидатора. Если идет картинка с признаком is_main, то очищал бы этот признак у других картинок и сохранля это свойства в переданной (в транзакции, так как тут две операции).

Не в сети

#6 14.04.2017 09:52:39

Re: Валидация только с 1й главной картинкой

Еще интересно — почему is_main не boolean?

Не в сети

#7 14.04.2017 14:12:49

Re: Валидация только с 1й главной картинкой

Спасибо за ссылки - помогло!
Булеан (0/1) привык по возможности в пхп не юзать из-за необходимости делать доп проверки на '0'.
Или в laravel этап проблема решена ?

Не в сети

#8 14.04.2017 14:28:34

Re: Валидация только с 1й главной картинкой

Она в php решена ))) сравнение с учетом типов


Не в сети

#9 14.04.2017 16:26:04

Re: Валидация только с 1й главной картинкой

Булеан (0/1) привык по возможности в пхп не юзать из-за необходимости делать доп проверки на '0'.

$x = (bool)$x;

скастует 0, '0', null и '' в false, а 1 и '1' – в true. кроме того валидация boolean в ларавеле воспринимает также значения 'on', 'off' и некоторые другие. при сохранении данных в модель кастование отдельных полей определяется свойством $casts модели. всё это есть в документации

Изменено constb (14.04.2017 16:26:19)

Не в сети

Подвал раздела