Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Почему бы просто не разделить букву М в MVC на две составляющие — данные и сервисные методы: Post и PostQuery
...
/**
* @method static \app\models\PostActiveQuery find( $q = null )
* @method static \app\models\PostActiveQuery findBySql( $sql, $params = array() )
*/
class Post extends \yii\db\ActiveRecord {
...
/**
* @return PostActiveQuery
*/
public static function createQuery() {
return new PostActiveQuery( array(
'modelClass' => get_called_class(),
) );
}
}
class PostActiveQuery extends ActiveQuery {
/**
* @param $title
* @return PostActiveQuery
*/
public function byTitle( $title ) {
$this->andWhere( 'title = :title', array( 'title' => $title ) );
return $this;
}
}
SELECT ..... FROM (SELECT .... FROM tbl2).....
$posts = Post::findBySql('SELECT ..... FROM (SELECT .... FROM tbl2)')->all();
$query->andWhere('user_id = :userId', array('userId' => $userId));
$query->andWhere('user_id = :userId', array(':userId' => $userId));
$post = Post::find(1);
$comment = new Comment();
$comment->text = 'Yii Framework is cool!';
$post->setComments(array($comment));
$post->save();
$form = $this->beginWidget('yii\widgets\ActiveForm', array(
'options' => array('class' => 'form-horizontal')
));
echo $form->field($model, 'username')->textInput();
echo $form->field($model, 'password')->passwordInput();
echo $form->field($model, 'rememberMe')->checkbox();
$post->getComments()->approved()->all();// approved - scope класса Comment
$this->view->var = 'value'; //zend
$this->var = 'value'; // a-la rails. Переменная var доступна во вью.
$this->request->redirect(...);
Yii2. Знакомство