Size: a a a

2021 September 28

И

Игорь in Laravel Pro
Тебе нужно при добавлении записи проверять на дубли, если уже есть,тоне записывать. Либо быстрый костыль - вычещаещь дубли и ставишь уникальтные ключи на user_id
источник

s

swatoff in Laravel Pro
Ну тогда у тебя реально есть дубли и не хватает уникальных индексов на таблицах
источник

DC

Dmitriy Code in Laravel Pro
Доброе утро
Коллеги, подскажите пожалуйста.

У меня есть Таблица items
id, name

Есть таблица limits
id, item_id, max_works

Есть таблица works
id, item_id, status

Мне нужно получить все Items у которых есть лимит, и max_works = 0 или max_works > item.works имеющих статусы не ["verified", "rejected", "refused"]
Что в запросе я делаю не так?

$sql = $sql->whereHas('limits', function ($query) {
           return $query->with('item.works')->where(function ($q) {
               return $q->where('max_works', 0)->orWhere(function($q) {
                   return $q->where("max_works", ">", function ($q) {
                       return $q->where('item.works', function ($q) {
                           return $q->whereNotIn("status", ["verified", "rejected", "refused"])->count();
                       });
                   });
               });
           });
       });

Буду благодарен. А то запутался немного(
источник

AR

Ali Rymkhanov in Laravel Pro
источник

AR

Ali Rymkhanov in Laravel Pro
Всем привет, у меня была задача, обновить данные на сервере(только тайтлы) и добавить туда еще один row. и для того чтобы реализовать эту задачу я сделал еще одну миграцию(так как нельзя грохнуть БД он рабочий). и я сделал так :

public function up()
   {
       Schema::table('protocol_templates_access_levels', function (Blueprint $table) {
           $table->integer("order")->nullable();
       });
//        DB::table("protocol_templates_access_levels")->select("*")->delete();
       $data = [
           [
               "id"  => 1,
               "title" => "Пользователь",
               "slug" => "onlyUser",
               "order" => 1
           ],
           [
               "id" => 2,
               "title" => "Отделение",
               "slug" => "onlyBranch",
               "order" => 2
           ],
           [
               "id" => 3,
               "title" => "Подразделение",
               "slug" => "onlyInstitutionBranch",
               "order" => 3
           ],
           [
               "id" => 4,
               "title" => "МО",
               "slug" => "onlyInstitution",
               "order" => 4
           ],
           [
               "id" => 5,
               "title" => "Все МО",
               "slug" => "Everybody",
               "order" => 5
           ],
       ];

       \DB::table("protocol_templates_access_levels")->upsert($data, "id");
   }


то есть, в миграции сделал апдейт на существующую таблицу. вроде все нормально должно было сработать (по доку). но у меня выходит ошибка(точнее в сервере тестировщика, а у меня все норм).
источник

AR

Ali Rymkhanov in Laravel Pro
это фото ошибок
источник

AR

Ali Rymkhanov in Laravel Pro
я примерно понял что в бд уже существует данные по таким айдишкам, и поэтому нельзя обновлять, но почему так ? вроде все норм же )
источник

И

Игорь in Laravel Pro
я тоже запутался, слишком большой уровень вложенности, думаю на производительность влияет. Что мешает не колбеками сделать, проще разобраться.
источник

DC

Dmitriy Code in Laravel Pro
А можете подсказать плз? Я просто JS разраб, а по ПХП вынуждено взял проект и вот стопорнулся на этом моменте
источник

И

Игорь in Laravel Pro
return $q->where('item.works', function ($q) {  - здесь ошибка у тебя нет таблицы item  и поля works d ytq
источник

И

Игорь in Laravel Pro
на может получиться, количество выведет $items = DB::select('select count(*) as cou from items LEFT JOIN limits ON limits.item_id = items.id LEFT JOIN works ON works.item_id = items.id WHERE (limits.max_works = 0) or (works.status NOT IN ("verified", "rejected", "refused"))');                  только по смыслу условия добавть, я не понял там еще у тебя. ВВерху поставь use Illuminate\Support\Facades\DB;
источник

DC

Dmitriy Code in Laravel Pro
Смотрите, вот тут отрабатывает первое условие

$q->whereHas('limits', function ($query) {
               $query->whereNull("max_works");
           })

=====================================

$sql = $sql->where(function ($q) {
           $q->whereHas('limits', function ($query) {
               $query->whereNull("max_works");
           })->orWhere(function ($q) {
               $q->whereHas('limits', function ($query) {
                   $query->whereNotNull("max_works");
               })->whereHas('works', function ($query) {
                   $query->whereNotIn("status", ["verified", "rejected", "refused"]);
               }, '<', 'limits.max_works');
           });
       });
источник

DC

Dmitriy Code in Laravel Pro
Не могу понять, почему второй не отрабатывает.

Получается что если 0 то мы должны выводить всегда. Если больше нуля то проверяем на лимит работ
источник

AS

Andrew Sparks in Laravel Pro
>что я делаю не так
(используешь орм)
источник

DC

Dmitriy Code in Laravel Pro
Ну можно же сделать как то, что если 0, то выводим, а если больше 0 то применяем JOIN и считаем
источник

H.

H . in Laravel Pro
Добрый день  Произошла эта ошибка Laravel
как я могу это исправить
источник

ST

Stanislav Tkachenko in Laravel Pro
покажи место где отправляешь письмо
источник

H.

H . in Laravel Pro
источник

H.

H . in Laravel Pro
MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=admin@gmail.com
MAIL_PASSWORD=adminpass
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=admin@gmail.com
MAIL_FROM_NAME=Admin
источник

ST

Stanislav Tkachenko in Laravel Pro
а в FeedbackЫent что там?
источник