За последние 24 часа нас посетили 22832 программиста и 1259 роботов. Сейчас ищут 704 программиста ...

Как модифицировать значение ключа при создании объекта модели

Тема в разделе "Laravel", создана пользователем dvladimirov77, 31 окт 2018.

  1. dvladimirov77

    dvladimirov77 Новичок

    С нами с:
    31 окт 2018
    Сообщения:
    5
    Симпатии:
    0
    с ларой знаком 3 дня, 2 дня ищу как связать несвязуемое :)
    наверное как то так:
    PHP:
    1.    protected static function boot()
    2.    {
    3.      parent::boot();
    4.      
    5.      static::addGlobalScope(function(Builder $builder) {
    6.        return DB::raw("LPAD('0', 9, product_code) AS product_code");
    7.      });
    8.    }
    Подскажите как правильно сделать?
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.554
    Симпатии:
    1.754
    Что за бред написан?
     
  3. dvladimirov77

    dvladimirov77 Новичок

    С нами с:
    31 окт 2018
    Сообщения:
    5
    Симпатии:
    0
    LPAD вам ни о чём не говорит?
    есть 2 таблицы, у одной ключ - инт(например 111), у другой варчар(например 000000111)
    надо сделать джоин.
    в обычном сиквеле проблем нет, а тут - хз как их связывать.
     
  4. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.554
    Симпатии:
    1.754
    Да LPAD хрен с ним, я про скоуп. А так, также всё связывается. Только разберись с Query Builder-ом. Твой код демонстрирует полное отсутствие понимания принципов Query Builder и назначения scope, хотя в доке это всё есть. Напиши запрос, который хочешь получить
     
    #4 mkramer, 31 окт 2018
    Последнее редактирование: 31 окт 2018
  5. dvladimirov77

    dvladimirov77 Новичок

    С нами с:
    31 окт 2018
    Сообщения:
    5
    Симпатии:
    0
    скоуп мне удобнее - я автоматом тяну сразу всё что надо :)

    в том то и дело - чистый сиквел работает, ему на нули в варчар пофиг:
    PHP:
    1. select images.name
    2. from rvs_products
    3. left join image_id on image_id.product_code = rvs_products.product_code
    4. left join images on images.image_id = image_id.image_id
    5. where rvs_products.product_id = 128839
    скоуп отношение тянет:
    Код (Text):
    1.  
    2.         return $this->hasManyThrough(
    3.             ProductImages::class,
    4.             ProductImagesId::class,
    5.             'product_code',
    6.             'image_id',
    7.             'product_code',
    8.             'image_id'
    9.         );
    и не работает - нули блин в ключе :(
    получается что когда я убираю нули - отношение работает.
    отсюда мысль - в буте модели посредника модифицировать значение ключа.
     
    #5 dvladimirov77, 31 окт 2018
    Последнее редактирование: 31 окт 2018
  6. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.554
    Симпатии:
    1.754
    Ну так ты скоуп неверно пишешь
     
  7. dvladimirov77

    dvladimirov77 Новичок

    С нами с:
    31 окт 2018
    Сообщения:
    5
    Симпатии:
    0
    так я потому тему и создал :)
    в гугле пока не смог найти как в скоуп рав для ячейки засунуть... думал может тут подскажут.
     
  8. dvladimirov77

    dvladimirov77 Новичок

    С нами с:
    31 окт 2018
    Сообщения:
    5
    Симпатии:
    0
    решения похоже нет, буду базу переделывать.