Есть проект на Yii2 фреймворке с шаблоном advanced. По гайду рекомендуют общую бизнес-логику моделей хранить в common, а специфичную логику реализовывать в соответствующий отнаследованных моделях frontend и backend.
Но что делать с отношениями? Получается их тоже надо обязательно переопределять? Приведу пример.
Модели пользователя и заказа в common:
namespace app\common\models;
use yii\db\ActiveRecord;
class User extends ActiveRecord{
public function getOrder(){
return $this->hasOne(app\common\models\Order::className(), ['user_id' => 'id']);
}
}
namespace app\common\models;
use yii\db\ActiveRecord;
class Order extends ActiveRecord{
}
В frontend создаем классы унаследованный от соответствующих классов из common:
namespace app\frontend\models;
use yii\db\ActiveRecord;
class User extends app\common\models\User{
}
namespace app\frontend\models;
use yii\db\ActiveRecord;
class Order extends app\common\models\Order
{
public function newMethod()
{
//Some logic
}
}
И пробуем сделать так:
$user = new app\frontend\models\User();
$user->order->newMethod();
Схватим исключение, т.к. newMethod определен только в классе Order фронтенда.
Что же это получается? Определять отношения надо только в backend и frontend? А для чего тогда common нужен?