Как делают я делаю DBIx:: объединяющие таблицы Класса с помощью других операторов, чем '='?

Еще один более простой вариант:

 > x = c(1, 1, 2, 4, 5, 2, 1, 3, 2)
 > x[x==1] <- 0
 > x
 [1] 0 0 2 4 5 2 0 3 2
14
задан Community 23 May 2017 в 11:45
поделиться

5 ответов

JB, обратите внимание, что вместо:

SELECT * 
        FROM half l 
        JOIN half r ON l.whole_id=r.whole_id AND l.half_id<>r.half_id
        WHERE l.half_id='L';

вы можете написать тот же запрос, используя:

SELECT * 
        FROM half l 
        JOIN half r ON l.whole_id=r.whole_id
        WHERE l.half_id<>r.half_id AND l.half_id='L';

, который вернет те же данные и определенно легче выразить с помощью DBIx :: Class.

Конечно, это не отвечает на вопрос «Как мне сделать таблицы соединения DBIx :: Class, используя другие операторы, кроме = ?», Но показанный вами пример не оправдывает такую ​​необходимость.

1
ответ дан 1 December 2019 в 13:59
поделиться

Вы пробовали:

__PACKAGE__->has_one(dual => 'Schema::Half', {
'foreign.whole_id' => 'self.whole_id',
'foreign.half_id' => {'<>' => 'self.half_id'},
});

Я считаю, что критерии соответствия в определении взаимосвязи такие же, как и при поиске.

1
ответ дан 1 December 2019 в 13:59
поделиться

'foreign.half_id' => \ '<> self.half_id'

0
ответ дан 1 December 2019 в 13:59
поделиться

Я думаю, что вы могли бы сделать это, создав новый тип отношений, расширяющий DBIx :: Class :: Relationship :: Base , но это не кажется невероятно хорошо документированным . Рассматривали ли вы возможность простого добавления удобного метода в набор результатов для Half , который выполняет -> поиск ({}, {join => ...} и возвращает Это не самоанализ, как отношения, но в остальном он также работает. Он использует способность DBIC связывать запросы в вашу пользу.

3
ответ дан 1 December 2019 в 13:59
поделиться

Вот как это сделать:

...
field => 1,                  # =
otherfield => { '>' => 2 },  # >
...
0
ответ дан 1 December 2019 в 13:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: