$obj = new Model_News();
$obj->getWhere()->addAnd('category = ?', 1)->adnOr('category = ?', 2);
$obj->fetchAll($limit, $offset, 'title ASC'); // реально, здесь у меня пока первым параметром
//идёт $where, но нужно брать из самого объекта
//тогда можно делать будет так
class Model_News extends Model {
protected $tableName = 'news';
public function __construct() {
$this->where = new Db_Where('visible = 1');
}
}
$obj = new Model_News();
$obj->getWhere()
->addAnd('category = ?', 1)
->adnOr('category = ?', 2)
->fetchAll($limit, $offset, 'title ASC');
// вёрнёт только видимые записи
$obj = new Model_News();
$obj->getWhereClear()
->addAnd('category = ?', 1)
->adnOr('category = ?', 2)
->fetchAll($limit, $offset, 'title ASC');
//вернёт всё
пример:Автор оригинала: korchasa
DYPA
Почему надстройка над настройкой это костыль?
$q = Doctrine_Query::create()
->select('a.name')
->from('Account a')
->where('a.amount > 2000');
echo $q->getSqlQuery();
$q = '
SELECT
a.id AS a__id,
a.name AS a__name
FROM account a
WHERE
a.amount > 2000
'
echo Db::Query($q);
Основное назначение DQL - независимость от конкретной СУБД. Есть небольшой профит от того, что форма объектная(простота группировки критерий, например), но это побочные плюсы.Автор оригинала: DYPA
пример:
есть SQL, есть орм Doctrine, есть костыль DQL (Doctrine Query Language)
о чём думал разработчик DQL - было бы круто писать меньше и проще изменять код и самое главное о чём думалось - повысить читаемость кода, а значит и его простоту, но вышло