Множество променливи в заявка за създаване на задвижване

Според api (http://trac.propelorm.org/wiki/Documentation/1.6/ModelCriteria) Търсех нещо подобно:

$param1 = 5;
$param2 = 3;

select id, name from testtable where ((sin(?) * (cos(?));

равна на

select id, name from testtable where ((sin($param1) * (cos($param2));

Как мога да направя това със задвижване? Намерих само начин да обвържа само 1 променлива наведнъж.

(Не искам да правя „И“, просто искам да обвържа повече от 1 променлива)

От документите това е за обвързване на една променлива:

<?php
// Finding all Books where title = 'War And Peace'
$books = BookQuery::create()
  ->where('Book.Title = ?', 'War And Peace')
  ->find();
?>

person eav    schedule 14.05.2012    source източник
comment
Във вашата заявка част (sin(?) * (cos(?) не е логическа (true/false) оценка за къде синтаксис???   -  person bitoshi.n    schedule 14.05.2012


Отговори (1)


Е, предполагам, че Propel работи като Doctrine за тази точка, опитахте ли:

$res = TestQuery::create()
  ->where('((sin(?) * (cos(?))', array($param1, $param2))
  ->find();

Ps: връзката за документация е толкова стара, използвайте новата: http://www.propelorm.org/reference/model-criteria.html

person j0k    schedule 14.05.2012
comment
Здравей j0k, пробвах, но не успя. (Фатална грешка: Неуловено изключение „PropelException“ със съобщение „Не може да се определи колоната за обвързване с параметъра в клаузата) Не можах да намеря нещо в api документа за обвързване на два параметъра.. - person eav; 15.05.2012
comment
Всъщност грешката казва, че трябва да дадете колона на клаузата where. Не можете ли да дадете колона в клаузата where? - person j0k; 15.05.2012
comment
Нямам представа как трябва да работи това... това е моята клауза where: $farmers-›where('ACOS(SIN(RADIANS(?))*SIN(RADIANS(latitude))+COS(RADIANS(?))* COS(РАДИАНИ(географска ширина))*COS(РАДИАНИ(дължина-?)))*6371 › ?', масив($curLat, $curLat, $curLon, $settingsArea)); - person eav; 15.05.2012