Я ищу для правильной передачи данных для родственных продуктов с помощью рамки YII, так как Im только изучает эту структуру. Мне интересно, знаете ли вы, как я должен это делать.yii с правильной/правильной моделью
Ive взял на себя проект, который использует YII, и, похоже, у него уже есть какая-то функциональность, но я не знаю, как его использовать.
Вот мой текущий код ...
В моей модели продукта я написал это сам ..
public function getRelatedProducts($id)
{
$rawData=Yii::app()->db->createCommand('SELECT * FROM '.Product::model()->tableName().' as Product LEFT JOIN '.ProductRelated::model()->tableName().' as ProductRelated ON ProductRelated.related_id=Product.id LEFT JOIN '.Images::model()->tableName().' as image ON Product.image_id=image.id WHERE ProductRelated.product_id='.$id.' ')->queryAll();
return $rawData;
}
и я получаю эти данные, используя ...
$related_products = Product::GetRelatedProducts($model->id);
Это работает, но не использует структуру YII.
Я заметил, что есть модель под названием ProductRelated (с небольшим количеством в ней). Но я не уверен, как ее использовать.
Это, очевидно, относится к таблице, у меня есть в базе данных под названием product_related
, которая имеет 2 поля, product_id
и related_id
, где related_id
представляет идентификатор продукта, к которому он был назначен (относящийся к).
Я хотел бы использовать этот класс, поскольку он, очевидно, был написан с учетом этого. Прямо сейчас я просто пропустил это.
class ProductRelated extends BaseProductRelated {
public static function model($className=__CLASS__)
{
return parent::model($className);
}
public static function LoadByProductIdRelatedId($intProductId , $intRelatedId)
{
return ProductRelated::model()->findByAttributes(array('product_id'=>$intProductId,'related_id'=>$intRelatedId));
}
}
Дочитав еще о YII я восстановил свой запрос ...
public function getRelatedProducts($id)
{
$criteria = new CDbCriteria();
$criteria->alias = 'Product';
$criteria->join ='LEFT JOIN '.ProductRelated::model()->tableName().' as ProductRelated ON ProductRelated.related_id=Product.id';
$criteria->join .=' LEFT JOIN '.Images::model()->tableName().' as image ON Product.image_id=image.id';
$criteria->condition = 'ProductRelated.product_id='.$id.'';
$criteria->order = 'Product.id DESC';
return $criteria;
}
Однако я не уверен, что делать с этим конечный бит кода и как связать его с модель, которую я показал выше.
Возможно, вы захотите добавить дополнительную информацию о модели ProductRelated, чтобы мы могли вам помочь. Поля/причина, по которой вы хотите связать свой запрос с этой моделью. –
Спасибо, я отредактировал сообщение и добавил дополнительную информацию до модели ProductRelated. – Adrian
Было бы полезно увидеть базовую модель ('BaseProductRelated'). , , – ernie