За последние 24 часа нас посетили 7846 программистов и 473 робота. Сейчас ищут 166 программистов ...

Помогите с доктриной)

Тема в разделе "PHP и базы данных", создана пользователем Алекс8, 15 сен 2020.

  1. Алекс8

    Алекс8 Активный пользователь

    С нами с:
    18 май 2017
    Сообщения:
    1.651
    Симпатии:
    344
    Привет всем)) пересел я тут на доктрину.. долгое время до этого с eloquent работал)) там все так просто было что я даже начал мускул забывать))
    но доктрина меня прям взбодрила..
    есть теги.. есть курсы... manyToMany связь...
    надо найти курсы у которых есть теги... что то типа элокменского whereHas надо в общем...
    делаю на доктрине..
    Код (Text):
    1.         $queryBuilder = $entityManager->createQueryBuilder();
    2.         $queryBuilder
    3.             ->select($queryBuilder->expr()->count('c'))
    4.             ->from(Course::class, 'c')
    5.             ->innerJoin(Tag::class, 't')
    6.             ->where('t.word.word = :word')
    7.             ->setParameter('word', 'testе');
    получаю ошибку..
    Код (Text):
    1. {"type":"error","data":{"code":0,"message":"An exception occurred while executing 'SELECT COUNT(c0_.id) AS sclr_0 FROM courses c0_ INNER JOIN tags t1_ WHERE (t1_.word = ?) AND (c0_.deleted_at IS NULL)' with params [\"test\\u0435\"]:\n\nSQLSTATE[42601]: Syntax error: 7 ERROR:  syntax error at or near \"WHERE\"\nLINE 1: ...d) AS sclr_0 FROM courses c0_ INNER JOIN tags t1_ WHERE (t1_...\n                                                             ^","level":"service"}}
    не очень понятно почему доктрина так тупо мускул генерит... по идее должна же сделать связи между двумя таблицами... а она тупо inner join написала и все..
    кто то подскажет как такие кейсы в доктрине решаются? )
     
  2. Алекс8

    Алекс8 Активный пользователь

    С нами с:
    18 май 2017
    Сообщения:
    1.651
    Симпатии:
    344
    документацию надо читать внимательнее))
    Код (Text):
    1. $queryBuilder->innerJoin('c.tags', 't')
     
  3. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    7.681
    Симпатии:
    1.487
    Надо же. Добровольно с красивого и понятного Eloquent на жутковатую доктрину...
     
  4. Алекс8

    Алекс8 Активный пользователь

    С нами с:
    18 май 2017
    Сообщения:
    1.651
    Симпатии:
    344
    наш архитектор так решил)) ларка плюс доктрина..
    мне Eloquent больше нравится)) но благодаря доктрине начал вспоминать то что забыл уже)