ФорумПрограммированиеPHP для идиотов → Профи обосрались? UnitOfWork, FK, insertID

Профи обосрались? UnitOfWork, FK, insertID

  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 11 августа 2010 г. 14:30, спустя 13 минут 42 секунды

    никогда не парился
    1. insert альбом
    2. insert трэк с id альбома

    что не так?

    У Track нужно создать метод setAlbumId и вызывать его из Album для всех треков сразу после создания альбома в базе.
    не всё полезно, что в swap полезло
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 11 августа 2010 г. 14:41, спустя 10 минут 55 секунд

    ТС кагбе считает что надо подстраховаться на случай эпического провала. Хотя если база поддерживает транзакции я лично не вижу почвы для беспокойства.
    ιιlllιlllι унц-унц
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 11 августа 2010 г. 14:42, спустя 1 минуту 23 секунды

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

    set autocomplete = off
    begin transaction
    insert into album (получаем id альбома)
    insert into track (в цикле, используем id альбома)
    end transaction

    всё в виде sql-команд, следующих одна за другой
    Спустя 28 сек.
    надо подстраховаться на случай эпического провала

    да не стоит оно того, я б забил
    не всё полезно, что в swap полезло
  • Sinkler

    Сообщения: 7958 Репутация: N Группа: в ухо

    Spritz 11 августа 2010 г. 14:43, спустя 1 минуту 13 секунд

    да не стоит оно того, я б забил

    смотря, сколько платят))
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 11 августа 2010 г. 14:44, спустя 43 секунды

    Sinkler, а сколько платят?
    не всё полезно, что в swap полезло
  • Sinkler

    Сообщения: 7958 Репутация: N Группа: в ухо

    Spritz 11 августа 2010 г. 14:46, спустя 1 минуту 57 секунд


    Sinkler, а сколько платят?

    Ну это у Абырвалга надо спросить)))
  • kostyl

    Сообщения: 5210 Репутация: N Группа: Джедаи

    Spritz 11 августа 2010 г. 15:08, спустя 21 минуту 51 секунду

    вообще, как я понял Абырвалг поднял вопрос по поводу UnitOfWork, а не тупо сохранить то, а потом то…
    Спустя 27 сек.
    ну не тупо, а тривиально
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 11 августа 2010 г. 15:10, спустя 2 минуты 42 секунды

    да-да, тут важно использование паттерна UoF а не просто инсерт рас, инсерт 2
    Спустя 48 сек.


    Sinkler, а сколько платят?

    Ну это у Абырвалга надо спросить)))


    это просто чувак из Швеции разрабатывает ORM'ку, которая меня заинтересовала, ну и иногда вопросы задает всякие
  • kostyl

    Сообщения: 5210 Репутация: N Группа: Джедаи

    Spritz 11 августа 2010 г. 15:32, спустя 21 минуту 13 секунд

    Абырвалг, так пусть тут задаёт
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 11 августа 2010 г. 15:38, спустя 6 минут 39 секунд

    он по-русски ни "бэ" ни "мэ"
    Спустя 78 сек.
    зарегистрироваться наверно не сможет даже)
  • kostyl

    Сообщения: 5210 Репутация: N Группа: Джедаи

    Spritz 11 августа 2010 г. 16:31, спустя 52 минуты 42 секунды

    Абырвалг, а ты шаришь по швейцарски?
    Спустя 110 сек.
    если он по английски шарит, то пусть пишет, что мы ему не поможем?
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 11 августа 2010 г. 16:36, спустя 5 минут 22 секунды

    да он не зарегистрируется даже. Ну я предложу ему
    Спустя 23 сек.
    http://www.rapiddatamapper.com/
    Спустя 93 сек.
    мне его ОРМка нравится именно немногословностью. У доктрины2 какая-то избыточность, слишком дохуя писанины

    $q = Db::getConnection()->select();

    $q->from('tracks');
    $q->where('artist_id', $_GET['artist_id']);

    // count a total to be able to determine the number of pages
    $tot = $q->count();

    // now limit and set offset to the correct page
    $q->limit(10, $_GET['p'] * 10);

    $r = $q->get();
    Спустя 66 сек.
    // Artist has many tracks
    $r = Db::find('artist')->related('tracks')->like('artist-tracks.name', 'Intro')->get();

    // …

    // Produced query:
    // SELECT [a lot of columns here]
    // FROM `artists` AS `artist`
    // LEFT JOIN `tracks` AS `artist-tracks` ON `artist-tracks`.`artist_id` = `artist`.`id`
    // WHERE `artist-tracks`.`name` LIKE '%Intro%'


    ахуенно же
  • kostyl

    Сообщения: 5210 Репутация: N Группа: Джедаи

    Spritz 11 августа 2010 г. 16:39, спустя 2 минуты 30 секунд

    да, ничё так
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 11 августа 2010 г. 16:50, спустя 11 минут 17 секунд

    это старая версия, без UnitOfWork, щас он там серьезно API переписывает, этой злоебучей статики не будет
  • Sinkler

    Сообщения: 7958 Репутация: N Группа: в ухо

    Spritz 11 августа 2010 г. 19:19, спустя 2 часа 29 минут 19 секунд

    куль, интересно

Пожалуйста, авторизуйтесь, чтобы написать комментарий!