reazzon Index – нужен потому-что обычно всегда по столбцам ключей идет поиск.
Спасибо, не знал о таком. Очень полезно.
Таблица получается по вашему примеру, только добавил ещё три поля для Nested Tree
public function up()
{
Schema::create('octoclub_blog_comments', function(Blueprint $table) {
$table->engine = 'InnoDB';
$table->increments('id');
$table->integer('item_id')->index()->unsigned(); // вместо post_id, так как модель у меня называется Item
$table->integer('user_id')->index()->unsigned();
$table->text('content');
$table->text('content_raw'); // оригинальный текст редактора (неотформатированный в HTML - нужен для редактирования)
$table->boolean('published')->default(0);
$table->integer('parent_id')->index()->unsigned();
$table->integer('nest_left')->nullable();
$table->integer('nest_right')->nullable();
$table->integer('nest_depth')->nullable();
$table->timestamp('published_at');
$table->timestamps();
});
}
Единственное, мне наверное название ячейки post_id
стоит заменить на item_id
, так как у меня модель статьи называется Item.
А вот с моделью, сижу второй день в доках и всё пытаюсь понять неужто мне там только таблицу и две связи нужно написать.
Вот файл, я пока лишнее не затирал:
<?php namespace OctoClub\Blog\Models;
use Model;
class Comment extends Model
{
public $table = 'octoclub_blog_comments';
/**
* @var array Guarded fields
*/
protected $guarded = ['*'];
/**
* @var array Fillable fields
*/
protected $fillable = [];
/**
* Связи
*/
public $hasOne = [];
public $hasMany = [];
public $belongsTo = [
'item' => ['OctoClub\Blog\Models\Item'],
'user' => ['RainLab\User\Models\User']
];
public $belongsToMany = [];
public $morphTo = [];
public $morphOne = [];
public $morphMany = [];
public $attachOne = [];
public $attachMany = [];
}
Но тогда где и как прописывать это:
reazzon // Я бы добавил еще поле даты публикации комментария.
// Самое главное не забыть в модели добавить массив $dates и добавить туда ключ этого поля.
Комментарии я хочу выводить в трёх местах:
- В статье
- В блоке "Новые комментарии на сайте"
- В профиле пользователя - для удобства, чтобы юзер мог быстро найти свои комменты.
Контроллер я не писал. Он наверное нужен только для бекенд части.
Что касается компонента, то думаю что как отдельный компонент он мне не нужен. Думаю лучше логику прописать в файле \plugins\octoclub\blog\components\Item.php
, а вёрстку в partial этого же компонента в папку item. Так же и для профиля юзера сделать.