model – Блог Stafox'a https://stafox.cc О программировании и веб-разработке Sun, 29 Nov 2015 09:37:59 +0000 en-US hourly 1 https://wordpress.org/?v=5.8.2 Zend Framework: работа с полем типа POINT в MySQL https://stafox.cc/zend-framework-work-with-point-type-in-mysql/ https://stafox.cc/zend-framework-work-with-point-type-in-mysql/#comments Tue, 22 Jan 2013 20:33:06 +0000 http://stafox.ru/?p=1896 Я расскажу Вам как на Zend Framework работать с полем типа POINT в MySQL. В этом нет ничего сложного, и сейчас Вы убедитесь в этом сами. Структуру таблицы возьмем из предыдущей статьи. Для начала нам понадобится модель, в которой мы опишем методы для работы с базой данных. [php title=”models/DbTable/Geo.php”] class Default_Model_DbTable_Geo extends Zend_Db_Table_Abstract { protected

Сообщение Zend Framework: работа с полем типа POINT в MySQL появились сначала на Блог Stafox'a.

]]>
Работа с типом POINT в MySQL

Я расскажу Вам как на Zend Framework работать с полем типа POINT в MySQL. В этом нет ничего сложного, и сейчас Вы убедитесь в этом сами.

Структуру таблицы возьмем из предыдущей статьи. Для начала нам понадобится модель, в которой мы опишем методы для работы с базой данных.
[php title=”models/DbTable/Geo.php”] class Default_Model_DbTable_Geo extends Zend_Db_Table_Abstract {

protected $_name = ‘geo’;
protected $_db;

public function addGeoPlace($place_name, $coordinates) {
$data = array(
‘place_name’ => $place_name,
‘coordinates’ => new Zend_Db_Expr("PointFromText(‘POINT($coordinates[x] $coordinates[y])’)")
);
return $this->insert($data);
}

public function getGeoLocationById($id) {
$select = $this->_db->select()
->from($this->_name, array(
‘id’,
‘place_name’
)
)
->columns(array(
‘x(coordinates) coordinates_x’,
‘y(coordinates) coordinates_y’
))
->where("id = $id");
$row = $this->_db->fetchRow($select);
return (!$row) ? null : $row;
}
}
[/php] Как Вы видите, ничего сложного. Для добавления различных выражений в ZF есть замечательный класс Zend_Db_Expr, который позволяет вставлять различные выражения. А вообще ZF сам распознает такие выражения (NOW, LOWER и прочие), если они заключены в скобки.

Ну, а пользоваться этим чудом очень просто.
[php title=”IndexController.php”] public function indexAction() {
$this->_helper->layout->disableLayout();
$this->_helper->viewRenderer->setNoRender();

$geoModel = new Default_Model_DbTable_Geo();
$coordinates = array(
"x" => 49.2343503980067,
"y" => 2.52738212494082
);
$geoModel->addGeoPlace("My Favorite Place", $coordinates);
}
[/php]

Ну вот, таким образом Вы научились заполнять поле типа POINT в Zend Framework.

Сообщение Zend Framework: работа с полем типа POINT в MySQL появились сначала на Блог Stafox'a.

]]>
https://stafox.cc/zend-framework-work-with-point-type-in-mysql/feed/ 2
Zend Framework: проблема с моделями. https://stafox.cc/zend-framework-problema-s-modelyami/ https://stafox.cc/zend-framework-problema-s-modelyami/#comments Thu, 03 Jan 2013 19:33:25 +0000 http://stafox.ru/?p=1717 Недавно столкнулся со следующей проблемой: при создании объекта класса модели или вызове методов описанных в модели возникала ошибка, которая полностью роняла приложение на пол. Причина этого явления была в том, что конструктор не мог создать объект класса. [php] $userModel = new Default_Model_User(); $userModel->getUserByName($name); [/php] Если Вы используете модули (module) и ваше приложение имеет схожую структуру

Сообщение Zend Framework: проблема с моделями. появились сначала на Блог Stafox'a.

]]>
Zend Framework: проблемы с моделями
Недавно столкнулся со следующей проблемой: при создании объекта класса модели или вызове методов описанных в модели возникала ошибка, которая полностью роняла приложение на пол.

Причина этого явления была в том, что конструктор не мог создать объект класса.
[php] $userModel = new Default_Model_User();
$userModel->getUserByName($name);
[/php] Если Вы используете модули (module) и ваше приложение имеет схожую структуру
[raw] application/
configs/
application.ini
layouts/
modules/
default/
controllers/
models/
views/
Bootstrap.php
Bootstrap.php
library/
public/
tests/
[/raw]

Тогда достаточно добавить в Bootstrap.php следующий код.
[php] protected function _initAutoload() {
$this->bootstrap("frontController");
$front = $this->frontController;

$autoloader = Zend_Loader_Autoloader::getInstance();
$autoloader->setFallbackAutoloader(true);

$modules = $front->getControllerDirectory();
$default = $front->getDefaultModule();

foreach (array_keys($modules) as $module) {
if ($module === $default) {
continue;
}
}
$autoloader->pushAutoloader(new Zend_Application_Module_Autoloader(array(
"namespace" => ucwords($module),
"basePath" => $front->getModuleDirectory($module),
)));
return $autoloader;
}
[/php]

Сообщение Zend Framework: проблема с моделями. появились сначала на Блог Stafox'a.

]]>
https://stafox.cc/zend-framework-problema-s-modelyami/feed/ 11