Xpoint
   [напомнить пароль]

DBIx::Class, left join с дополнительным условием

Метки: [без меток]
2009-10-01 16:25:33 [обр] Nuclon(0/22)[досье]

нужно сделать что-то типа "LEFT JOIN table2 ON table2.tid1=table1.id AND table2.due <= date(now())"

Пытался делать так:

__PACKAGE__->has_many(
  "overdue_invoices",
  "Project::Schema::Result::Invoices",
  { "foreign.user_id" => "self.id", "foreign.due" => \"<= date(now())" },
  { "join_type" => "left" },
);

получаю - Invalid rel cond val SCALAR(0xc33b8f0)

есть ещё какие-нибудь варианты?

спустя 1 год 2 месяца [обр] Dimtos[досье]

Вопрос, думаю, для многих актуальный до сих пор. Поэтому поддерживаю тему.
Имеются четыре таблицы:
table1 с полями t1_id, ...
table2 с полями t2_id, t1_id, ...
table3 с полями t3_id, t1_id, ...
table4 с полями t4_id, t2_id, t3_id
Необходимо выбрать всё из всех со всеми связями. В SQL выглядело бы так:
SELECT
  *
FROM
  table1
LEFT JOIN
  table2
ON
  table2.t1_id = table1.t1_id
LEFT JOIN
  table3
ON
  table3.t1_id = table1.t1_id
LEFT JOIN
  table4
ON
 table4.t2_id = table2.t2_id AND table4.t3_id = table3.t3_id

Но как реализовать это с помощью DBIx::Class?

Powered by POEM™ Engine Copyright © 2002-2005