При создание записи задается время и для создания и для апдейта.
При изменение записи меняется только поле апдейта, например перезалили картинку или поменяли описание, когда что то меняем в общем.
Это можете вычеркнуть, если вам не нужны временные метки.
Я обычно использую во всех таблицах.
Некогда не знаешь, какая моча в голову ударит начальству ( показать последние фотографии из галерей, например)
public function getI18n()
{
return $this->hasOne('PostI18n', array('id' => 'post_id'))
->where('post_I18n.local = :lang', [':lang' => Yii::app()->language ]);
}
Как то так вроде.
$lang можно параметр брать язык из
Использовать scope когда список joinWith('I18n')... или with(['I18n'])
Когда одна запись запись можно получить запись по
$post = Post::find(1);
$post->I18n->title;
Но такая манипуляция сделает 2 запроса первый запрос будет по post второй будет по post_I18n
Поискать можно по запросу REST API
Многие фреймворки поддерживают удобную архитектуру rest из коробки
laravel, yii2.
API на сайте это при запросе GET или POST запроса мы отдаем json или xml данные.
Лучше JSON с ним проще работать на клиенте и на сервере.
Не требует особых навыков). на сервере если используется PHP json_encode/json_decode
habrahabr.ru/post/145946