Код: Выделить всё
<?php
namespace app\modules\catalog\models\entity;
use app\modules\media\components\behaviors\ImageUploadMinify;
use yii\behaviors\SluggableBehavior;
use yii\behaviors\TimestampBehavior;
/**
* This is the model class for table "product".
*
* @property int $id
* @property int $is_active
* @property string|null $name
* @property string $slug
* @property string|null $image
* @property int|null $category_id
* @property int|null $created_at
* @property int|null $updated_at
*
* @property Offers $offers
*/
class Product extends \yii\db\ActiveRecord
{
public function behaviors()
{
return [
TimestampBehavior::className(),
[
'class' => SluggableBehavior::className(),
'attribute' => 'name',
'ensureUnique' => true,
],
[
'class' => ImageUploadMinify::class,
'attribute' => 'image',
'path' => '@webroot/upload/',
'url' => '@web/upload/'
],
];
}
public function rules()
{
return [
[['is_active', 'category_id', 'created_at', 'updated_at'], 'integer'],
[['slug'], 'required'],
[['name'], 'string', 'max' => 128],
[['slug', 'image'], 'string', 'max' => 255],
];
}
public function attributeLabels()
{
return [
'id' => 'ID',
'is_active' => 'Is Active',
'name' => 'Name',
'slug' => 'Slug',
'image' => 'Image',
'category_id' => 'Category ID',
'created_at' => 'Created At',
'updated_at' => 'Updated At',
];
}
public function getOffers()
{
return $this->hasMany(Offers::className(), ['product_id' => 'id']);
}
public function extraFields()
{
return [
'offers'
];
}
}
Код: Выделить всё
<?php
namespace app\modules\catalog\controllers;
use app\modules\catalog\models\entity\Product;
use app\modules\catalog\models\entity\SaveProductProperties;
use app\modules\catalog\models\helpers\OfferHelper;
use yii\helpers\Json;
use app\modules\catalog\models\entity\Offers;
use yii\rest\Controller;
class RestController extends Controller
{
public $modelClass = 'app\modules\catalog\models\entity\Product';
public function behaviors()
{
return [
'corsFilter' => [
'class' => \yii\filters\Cors::className(),
],
];
}
protected function verbs()
{
return [
'get' => ['GET'],
];
}
public function actionGet()
{
$query = $this->modelClass::find();
return Json::encode($query->all());
}
}
Код: Выделить всё
[{"id":1,"is_active":1,"name":"йцввцй","slug":"jcvvcj","image":null,"category_id":2,"created_at":1607061945,"updated_at":1607061945},{"id":2,"is_active":1,"name":"asdasdads","slug":"asdasdads","image":null,"category_id":2,"created_at":1607064414,"updated_at":1607064414}]