Хобрук: Ваш путь к мастерству в программировании

Как я могу выбрать записи таблицы, которые не имеют записей отношения в доктрине 1.2

Как я могу выбрать все записи таблицы, которые не имеют записей отношений, используя запрос доктрины 1.2?

Я пробовал такие вещи (ниже), но мне говорят, что t.Relations нет, возможно, потому, что я установил отношение FK в таблице Relation? Кажется, что это должно быть очень просто, но не могу понять. Просмотрел подзапросы, но не мог понять, правильно ли это. благодаря.

     $q = Doctrine_Query::create()
    ->from('Table t')
    ->leftJoin('t.Relations r')
     ->where('t.user_id = ?',$userId)
     ->andWhere('t.Relations IS NULL')
        return $q->execute();

Сильно упрощенная схема:

Table:
  columns:    
    id:
      type:             integer
      notnull:          true
    user_id:
      type:             integer
      notnull:          true
  relations:
    User:
      class:            User
      foreign:          id
      local:            user_id
      foreignAlias:     Users



Relation:
  columns:    
    table_id:
      type:             integer
      notnull:          true
  relations:
    Table:
      class:            Table
      foreign:          id
      local:            table_id
      foreignAlias:     Relations
10.11.2014

Ответы:


1

Не зная вашего сообщения об ошибке, я только предполагаю, но ошибка, вероятно, находится в вашем выражении andWhere(..). Таблица t не имеет свойства Relation, вместо этого вы хотите проверить таблицу r:

$q = Doctrine_Query::create()
    ->from('Table t')
    ->leftJoin('t.Relations r')
    ->where('t.user_id = ?',$userId)
    ->andWhere('r.table_id IS NULL')
return $q->execute();
10.11.2014
  • спасибо, это была проблема. Я думал в обратном направлении. 21.11.2014
  • Новые материалы

    Декларативное и функциональное программирование в стиле LINQ с использованием JavaScript с использованием каррирования и генератора ...
    LINQ - одна из лучших функций C #, которая обеспечивает элегантный способ написания кода декларативного и функционального стиля, который легко читать и понимать. Благодаря таким функциям ES6,..

    Структуры данных в C ++ - Часть 1
    Реализация общих структур данных в C ++ C ++ - это расширение языка программирования C, которое поддерживает создание классов, поэтому оно известно как C с классами . Он используется для..

    Как я опубликовал свое первое приложение в App Store в 13 лет
    Как все началось Все началось три года назад летом после моего четвертого класса в начальной школе. Для меня, четвертого класса, лето кажется бесконечным, пока оно не закончится, и мой отец..

    Что в лицо
    Очерк о возвращении физиогномики и о том, почему мы должны это приветствовать. История начинается со странной науки. Р. Тора Бьорнсдоттир, Николас О. Рул. Видимость социального класса по..

    Почему шаблоны проектирования и почему нет?
    Сложность — мать всех проблем в программировании. Программное обеспечение должно быть разработано с точки зрения того, кто его поддерживает, а не того, кто его пишет, потому что программное..

    Создание дизайна обуви с помощью машинного обучения
    Обувь. Что подождать? Я думал, что речь пойдет о машинном обучении! Ну это так. Если бы вы пошли на Amazon, сколько обуви вы бы нашли? Наверное, много, не так ли? Но много ли в них..

    GraalVM в 2022 году: итоги года
    2022 год был очень продуктивным для проекта и сообщества GraalVM. Вместе мы разработали множество новых функций, выпустили GraalVM для последних версий Java и новых платформ и увидели несколько..