1 Я называю таблицы в единственном числе, как и модели.
пример
blog_post
blog_category
blog_category_many или по фен-шую blog_category_pivot в общем любая many_to_many таблица заканчиваться на pivot
И еще, если это таблица относиться к блогу вначале всегда будет идти будет blog_ , так легче потом ориентироваться по БД.
Связи как меня учили манахи, которые часто используються в моделях я выношу в trait
UserRelationshipUserId
User что я в этой связи получаю Relationship - говорит мне что за трейт UserId по какому полю я получаю User модель
Большая чать роли как говорил мне сенсей являеться поддержка phpdoc в комментариях для IDE
<?php
namespace app\models\traits;
use app\models\User;
/**
* Class UserRelationUserId
*
* @package app\models\traits
* @property \app\models\User $user
*/
trait UserRelationUserId
{
/**
* Relationship get user
* @return \yii\db\ActiveQuery
*/
public function getUser()
{
/**@var \yii\db\ActiveRecord $this */
return $this->hasOne(User::className(), ['id' => 'user_id']);
}
}
4 Обычно из CRUD я использую только генерацию модели, так как ручное создание кода модели с нуля тратит мою чакру в пустую)