Я создал простой REST API с каркасом Yii2. Я создал контроллер с некоторыми запросами для получения данных из базы данных. Но теперь я хочу отделить эти запросы от контроллера. Я думал, что я включил функцию для получения запроса в Model (ActiveRecord), но я не могу получить доступ к этому методу с моего контроллера.Yii2 использовать методы в контроллере из модели (REST API)
namespace app\models;
use yii\db\ActiveRecord;
class Car extends ActiveRecord {
public function __construct(){
parent::__construct();
}
public static function tableName(){
return 'auto_new';
}
public static function primaryKey(){
return ['auto_id'];
}
// Regels voor POST callback
public function rules(){
//voorbeeld
/*
return [
[['username', 'password'], 'required']
];
*/
}
public static function getCar(){
$query = (new Query())
->select([
'a.auto_id auto_id',
'm.merk merk',
'a.model model',
'a.uitvoering uitvoering',
'k.kleur kleur',
't.transmissie transmissie',
'a.kmstand kmstand',
'a.bouwjaar bouwjaar',
'a.vermogen vermogen',
'b.brandstof brandstof',
'g.garantie garantie',
'a.prijs prijs',
'kl.postcode postcode',
'kl.woonplaats woonplaats',
'GROUP_CONCAT(DISTINCT(atn.NL)) opties',
'GROUP_CONCAT(DISTINCT(f.foto_id)) fotos'
])
->from('auto_new a')
->join('INNER JOIN', 'tbl_merken m', 'a.merk = m.merk_id') //Merk
->join('INNER JOIN', 'tbl_kleur k', 'a.kleur = k.kleur_id') //Kleur
->join('INNER JOIN', 'tbl_transmissie t', 'a.transmissie = t.transmissie_id') //Transmissie
->join('INNER JOIN', 'tbl_brandstof b', 'a.brandstof = b.brandstof_id') //Brandstof
->join('INNER JOIN', 'tbl_garantie g', 'a.garantie = g.garantie_id') //Garantie
->join('INNER JOIN', 'klanten kl', 'a.ac = kl.ac') //Klantgegevens
//Alle opties van de auto
->leftJoin('auto_accessoire acc', 'a.auto_id = acc.auto_id AND a.ac = acc.ac')
->leftJoin('tbl_accessoires_trader_new atn', 'acc.code_id = atn.code_id')
//Alle foto's van de auto
->leftJoin('auto_foto f', 'a.auto_id = f.auto_id AND a.ac = f.ac')
->groupBy('a.auto_id')
->all();
return $query;
}
}
Это метод в моем контроллере:
public function actionGetcarsbyac($ac) {
Yii::$app->response->format = Response::FORMAT_JSON;
$model = $this->modelClass;
$query = Car::getCar();
$query->where(['a.ac' => $ac]);
return $query;
}
Это дает мне следующее сообщение об ошибке при попытке открыть URL:
вызов функции члена getUniqueId() на не-объекте
Я не знаю, что делать или где разместить запрос методы.
Вот это на самом деле. Но теперь это не дает мне json с данными, а json с запросом: https://gyazo.com/a39da3d2f25ee0ff0e25e21824f605a6 –
Раньше мы использовали короткую руку для объекта Query builder, теперь я изменил его на обычную форму. –
хм, это ничего не меняет –