Absinthe
жожо
Не проще ли прочитать документацию чем composer, чем юзать сомнительные библиотеки?
Хотя твое дело. Пиши хреновый код дальше.
Не проще ли прочитать документацию чем composer, чем юзать сомнительные библиотеки?
$q = new Doctrine_RawSql();
$q->select('{u.*}, {p.*}')
->from('user u LEFT JOIN phonenumber p ON u.id = p.user_id')
->addComponent('u', 'User u');
->addComponent('p', 'u.Phonenumbers p')
->execute();;
А смысл в чем - прокачивать этот idiorm - в файле исходников?Фанат, знаешь, у меня есть идея делать все эти методы квери билдера и файнеры protected, чтобы было понятно, что это хрень, которая юзаются внутри модели. В первой доктрине есть замечательный момент, который показывает суть ORM
Делается обычный запрос, а затем его результат оборачивается в объекты.PHP:$q = new Doctrine_RawSql(); $q->select('{u.*}, {p.*}') ->from('user u LEFT JOIN phonenumber p ON u.id = p.user_id') ->addComponent('u', 'User u'); ->addComponent('p', 'u.Phonenumbers p') ->execute();;
StalkerClasses, вот не понимаю, выше дал тебе способ как расширить класс idiorm с которым у тебя была загвоздка http://phpclub.ru/talk/threads/Что-выбрать-для-работы-с-php-mysql-orm.77043/page-2#post-697435
затем ты не справился с компосером.
может тебе всё же основы прокачать, а не хвататься за библиотеки попонятнее на теперешнем уровне? это путь вникуда, сложности нужно преодолевать, а не ускользать, так как придтся делать огромный круг до нужных знаний.
Мне визуально читается, всеравно первый вариант записи.Что характерно - у авторов Флуента хватило ума показать пример как раз такого случая, когда использование билдера оправдано.
Авторы же ноторма радостно пишут эту вот ерунду
там где нужна ровно одна строчкаPHP:$applications = $db->application() ->select("id, title") ->where("web LIKE ?", "http://%") ->order("title") ->limit(10) ;
PHP:$apps = $db->getAll("SELECT id, title FROM application WHERE web LIKE ? ORDER BY title LIMIT 10", "http://%");
Объясняй.А ты присмотрись:
$post-> [ctrl + space]Код:$post = R::dispense('post'); $post->text = 'Hello World';
class MyDbFluentPDO extends FluentPDO {
function __construct(PDO $pdo=null, FluentStructure $structure = null) {
if ($pdo == false){
$pdo = new PDO("mysql:dbname=".db.";host=".host, user, pass,
array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
}
$this->pdo = $pdo;
if (!$structure) {
$structure = new FluentStructure;
}
$this->structure = $structure;
}
}
protected function __construct(FluentPDO $fpdo, $clauses) {
$this->fpdo = $fpdo;
$this->clauses = $clauses;
$this->initClauses();
}
Либа очень понравилась.StalkerClasses, прекрати пытаться сделать какую-то хрень. Либа принимает PDO - по моему замечательно.
Создаешь экземпляр PDO, инжектишь его в флюент свой и работаешь.
Вот тот код что ты написал - неподдерживаемая трудноразберимая хренота.
А что если константы не объявлены? а что если подключение через сокет? а что если не utf8? А также это можно сделать проще - в dsn дописать charset=utf8
И да.
Надо вызывать родительский конструктор. Всегда!
class MyDbFluentPDO extends FluentPDO {
function __construct(PDO $pdo = null, FluentStructure $structure = null) {
if ($pdo == false){
$pdo = new PDO('mysql:host=localhost;dbname=db',"user","pass",
array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8") );
}
parent::__construct($pdo, $structure);
}
}