вызов модели
вызов модели
подскажите пожалуйста как правильно вызывать модель, к примеру из контролера или сторонней библиотеке ?
Re: вызов модели
ModelName::model()->findByAttribute(); ?
Re: вызов модели
всмысле вот есть например контролер:
и метод в модели (test_model.php) например:
вот например как можно инициализировать модель в контролере (к примеру) и обратиться к методу тест ?
Код: Выделить всё
public function actionTest()
{
}
и метод в модели (test_model.php) например:
Код: Выделить всё
public function test()
{
// вернет какие-то данные из базы
}
вот например как можно инициализировать модель в контролере (к примеру) и обратиться к методу тест ?
Re: вызов модели
Все зависит от задачи. Грубо говоря - экземпляр модели это 1 строка в таблице БД.
Re: вызов модели
ну например есть задача достать материал из базы под номером 17
Код: Выделить всё
// вот есть контроллер к примеру:
function actionContent($id = false)
{
//тут я хочу вызвать модель и передать в нее $id
//что бы получить запись в базе под номером 17
// по CI я знаю что можно вызвать:
// $this->model->modelname($id);
// а вот как в Yii вообще вызвать модель?
}
Re: вызов модели
nepster писал(а):ну например есть задача достать материал из базы под номером 17
Код: Выделить всё
function actionContent($id)
{
$model = Test::model()->findByPk($id);
}
Re: вызов модели
это получается по сути любой класс из любого вызывается статическими методами.
Тоесть не важно взываю ли я модель из контролера или из библиотеки, все через статические методы!?
а то не привычно слазить с CI на Yii
Тоесть не важно взываю ли я модель из контролера или из библиотеки, все через статические методы!?
а то не привычно слазить с CI на Yii
Re: вызов модели
Статическая функция Model() используется для получения статического экземпляра ActiveRecord, что позволяет вызывать методы этого класса (поиск по базе и т.п.).
Если вам нужно создать экземпляр модели Test и что-то с ним делать, то все как обычно:
Если вам нужно создать экземпляр модели Test и что-то с ним делать, то все как обычно:
Код: Выделить всё
$model = new Test;
$model->param1 = '123';
$model->test_model();
$model->delete();
Re: вызов модели
большое спасибо.
Сделал вот так :
модель
контроллер
все сработало
Сделал вот так :
модель
Код: Выделить всё
var $command;
public function __construct()
{
$this->command = Yii::app()->db->createCommand();
}
public static function model($className=__CLASS__)
{
return parent::model($className);
}
// таблица пользователей
public function tableName()
{
return '{{users}}';
}
// общее кол-во пользователей на сайте
public function usersCount()
{
// кол-во пользователей в базе данных
return $this->command->select('COUNT(*)')->from($this->tableName())->queryScalar();
}
контроллер
Код: Выделить всё
var $UsersModel;
public function __construct()
{
// подключаем модель
Yii::import('application.modules.users.models.UsersModel');
// модель пользователей
$this->UsersModel = new UsersModel;
}
public function actionIndex()
{
echo '<p>Всего пользователей на сайте: '.$this->UsersModel->usersCount().'</p>';
}
все сработало
Re: вызов модели
Всё, что Вы написали можно заменить одной строкой:
Код: Выделить всё
public function actionIndex()
{
Yii::import('application.modules.users.models.UsersModel');
echo '<p>Всего пользователей на сайте: ' . UsersModel::model()->count() . '</p>';
}