ZendFramework Как блин поиметь все поля таблицы?

craz

Нестандартное звание
Собственно сабж...
Это вот че за дебелизм в туториале...
http://framework.zend.com/manual/2.1/en/user-guide/database-and-models.html
PHP:
<?php
namespace Album\Model;

class Album
{
    public $id;
    public $artist;
    public $title;

    public function exchangeArray($data)
    {
        $this->id     = (isset($data['id'])) ? $data['id'] : null;
        $this->artist = (isset($data['artist'])) ? $data['artist'] : null;
        $this->title  = (isset($data['title'])) ? $data['title'] : null;
    }
}
 

AmdY

Пью пиво
Команда форума
ну, для моделей лучше создавать совместного родителя с поддержкой ArrayAccess и в нём реализовывать методы типа fromArray, toArray
Вот пример для доктрины http://tokarchuk.ru/2012/02/doctrine-2-properties/
 

craz

Нестандартное звание
ну, для моделей лучше создавать совместного родителя с поддержкой ArrayAccess и в нём реализовывать методы типа fromArray, toArray
Вот пример для доктрины http://tokarchuk.ru/2012/02/doctrine-2-properties/
подожди там все есть и так уже... zf2 же... Я просто спрашиваю, где теперь можно посмотреть поля таблицы... Понятное дело не в модели которую я показал. Но чушь они конечно полную написали в туториле. Короче походу маппер нужен для связи таблица модель, только вот почему таблица не знает полей которые у таблицы, чисто mysqlивских...
 

craz

Нестандартное звание
Вроде нарыл, надо метаданные получить нужной таблицы
только вот при:
PHP:
$metadata->getTable
$metadata->getTableNames
Вываливается:
PHP:
Notice: Attempting to quote a value in Zend\Db\Adapter\Platform\Mysql without extension/driver support can introduce security vulnerabilities in a production environment. in X:\home\c.my\vendor\zendframework\zendframework\library\Zend\Db\Adapter\Platform\Mysql.php on line 128
Кто нить сталкивался?

Вроде как в них надо передать объект таблицы \mysqli или \PDO
PHP:
public function quoteValue($value)
    {
        if ($this->resource instanceof \mysqli) {
            return '\'' . $this->resource->real_escape_string($value) . '\'';
        }
        if ($this->resource instanceof \PDO) {
            return $this->resource->quote($value);
        }
        trigger_error(
            'Attempting to quote a value in ' . __CLASS__ . ' without extension/driver support '
                . 'can introduce security vulnerabilities in a production environment.'
        );
        return '\'' . addcslashes($value, "\x00\n\r\\'\"\x1a") . '\'';
    }
Как это сделать кто нить-подскажет?? Я передаю строкой, и понятное дело он фигашит нотис(
 

Gas

может по одной?
судя по коду, строку то и надо передавать, а валится потому что $this->resource не является ни mysqli, ни PDO
 

craz

Нестандартное звание
Вы че, блин, стебетесь, а? Один "че", блин, пришел написал, второй про безнадежностью мою, на че он надеятся я ваще хрен нает... тритий просто стебется.

Есть мысли почему ресурс пустой?

Они взяли поменяли это http://framework.zend.com/security/advisory/ZF2013-03 и написали вот эту фигню... А че они сказать этим хотят я не пойму...

https://github.com/zendframework/zf2/issues/4042 Вот кстати сам баг.. или типа баг.
 

AmdY

Пью пиво
Команда форума
craz
ту путаешь тёплое с мягким http://martinfowler.com/eaaCatalog/dataMapper.html
есть модель, в твоём случае это Album\Model\Album - это просто хрень которая ничего не знает о базе и что куда сохранять. обычный key-value
есть мэппер, в ZF это вроде getway и в твоём случае это Album\Model\AlbumGetway, он уммет работать с базой и ему ПЕРЕДАЁТСЯ наша модель, мэппер сам решает какие поля из модели, куда и как класть, он заполняет эту модель когда ты выбираешь данные из стораджа.

Модель не знает о базе, гетвей знает о базе и о модели. Вот такое говнецо. которое гибкое-расширябельное, но неудобное. Это зенд 2, они обещали ещё больше когда и сделали.
 

craz

Нестандартное звание
craz
ту путаешь тёплое с мягким http://martinfowler.com/eaaCatalog/dataMapper.html
есть модель, в твоём случае это Album\Model\Album - это просто хрень которая ничего не знает о базе и что куда сохранять. обычный key-value
есть мэппер, в ZF это вроде getway и в твоём случае это Album\Model\AlbumGetway, он уммет работать с базой и ему ПЕРЕДАЁТСЯ наша модель, мэппер сам решает какие поля из модели, куда и как класть, он заполняет эту модель когда ты выбираешь данные из стораджа.

Модель не знает о базе, гетвей знает о базе и о модели. Вот такое говнецо. которое гибкое-расширябельное, но неудобное. Это зенд 2, они обещали ещё больше когда и сделали.
Хм. Ну соглашусь, я все таки хотел в Album\Model\Album присунуть Album\Model\AlbumGetway в котором хотел поиметь метод getColumns, и его там пользовать, как ты описал это не верно... Значит нужна какая-то обвязка которая будет знать о AlbumGetway, и будет передевать методы в Album\Model\Album.

И так как бы то не было... они зачем то вызывают ошибку гады...

Я правильно это понял? Что надо сделать? Свой обработчик писать чтоль?
 
Сверху