Добрый день!
Только начал осваивать фреймворк. А как можно сделать следующее:
В базе на postgresql каждый час генерируются 2 таблицы с учетом трафика по такой схеме
acct_incoming_YMD_H00
acct_outcoming_YMD_H00 Y-год, M-месяц, D-день, H-час
Хочу прикрутить к ним Yii2 и с помощью фреймфворка производить поиск по вход и исх трафику айпи адресов.
Не могу понять как мне описать модель и т.д. Как примерно вообще это реализуется в Yii2?
Как подключить стороннюю базу данных
Re: Как подключить стороннюю базу данных
Для создания моделей и контроллеров "для чайников" есть утилита Gii.
Запускаешь, тыкаешь кнопочки, генерируется код.
Изучишь этот код и переделаешь как тебе нужно.
Ну это если лень читать документацию и учебники по Yii.
Запускаешь, тыкаешь кнопочки, генерируется код.
Изучишь этот код и переделаешь как тебе нужно.
Ну это если лень читать документацию и учебники по Yii.
Re: Как подключить стороннюю базу данных
Если имена динамические, можно сделать через QueryBuilder.
Re: Как подключить стороннюю базу данных
По Gii простые модели с одной таблицей я понял как делать. А вот как динамически менять имя таблицы в модели этого понять не могу
И чтобы в контроллере использовать одну ту же модель.
Объясните это новичку пожалуйста)))
Код: Выделить всё
/models/Abon.php
<?php
namespace app\models;
use Yii;
use yii\db\ActiveRecord;
use yii\db\Connection;
$table_name = 'acct_incoming_20171201_0000';
class Abon extends ActiveRecord
{
public static function getDb(){
return Yii::$app->db1;
}
public static function tableName($table_name)
{
//return 'acct_incoming_20171201_0000';
return $table_name;
}
}
Код: Выделить всё
/controllers/AbonController.php
<?php
namespace app\controllers;
use yii\web\Controller;
use yii\data\Pagination;
use app\models\Abon;
class AbonController extends Controller
{
public function actionIndex()
{
//$table_name = 'acct_incoming_20171201_0000';
$query = Abon::find();
$pagination = new Pagination([
'defaultPageSize' => 25,
'totalCount' => $query->count(),
]);
$abons = $query->orderBy('ip_src')
->offset($pagination->offset)
->limit($pagination->limit)
->all();
return $this->render('index', [
'abons' => $abons,
'pagination' => $pagination,
]);
}
}
?>
Re: Как подключить стороннюю базу данных
Метод "tableName" статический, значит по-нормальному никак, разве что через такой костыль:
Потом вызываем так
Код: Выделить всё
class Abon extends ActiveRecord
{
public static $tableName;
/**
* @inheritdoc
*/
public static function tableName()
{
return self::$tableName;
}
public static function setTableName($tableName)
{
self::$tableName = $tableName;
}
...
Код: Выделить всё
Abon::setTableName('acct_incoming_20171201_0000');
$query = Abon::find();
Re: Как подключить стороннюю базу данных
Спасибо большое, Nex-Otaku! Как раз то что не смог написать. Задачу реализовать смог благодаря вам и очень помогли в практическом освоении фреймфорка)))Nex-Otaku писал(а): ↑2017.12.12, 18:09 Метод "tableName" статический, значит по-нормальному никак, разве что через такой костыль:
Потом вызываем такКод: Выделить всё
class Abon extends ActiveRecord { public static $tableName; /** * @inheritdoc */ public static function tableName() { return self::$tableName; } public static function setTableName($tableName) { self::$tableName = $tableName; } ...
Код: Выделить всё
Abon::setTableName('acct_incoming_20171201_0000'); $query = Abon::find();