@ColdSpirit

Как правильно использовать связь таблиц?

Всем доброго времени суток. Делаю на Yii легкий блог, возникло несколько вопросов.
По принципу инкапсуляции создал 3 таблицы - пост, категория, и промежуточная, содержащая в себе ид обеих. После сгенерировал модель для постов.
Вопросы такие:
  1. Правильный ли такой подход в 3 таблицы?
  2. Как мне организовать управление постами и категориями, в плане нужных для этого моделей и контроллеров? Хватит ли одних модели и контроллера для постов?
  3. Как по феншую называть связывающие таблицы? Сам долго не думал и назвал "bind_post_category"
  4. Для отображения новостей мне использовать сгенерированные круд контроллеры и виды, либо лучше написать их самому?
  • Вопрос задан
  • 648 просмотров
Решения вопроса 2
sanchezzzhak
@sanchezzzhak
Ля ля ля...
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 я использую только генерацию модели, так как ручное создание кода модели с нуля тратит мою чакру в пустую)
Ответ написан
Комментировать
@IceJOKER
Web/Android developer
1. Очень даже правильный, если один пост может быть в нескольких категориях, иначе нужны только 2 таблицы.
2. Про связи в YII есть много информация, ищите.
3. Название должно быть понятным в первую очередь вам, а потом и другим, кто будет с ним работать. В вашем случае вполне адекватное название.
4. А что у нас-то спрашивать? Если хотите быстро сделать - КРУД, иначе пишите сами(+опыт,+скорость печати..)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы