Если slug лежит в отдельной таблице

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
brain2xml
Сообщения: 42
Зарегистрирован: 2013.07.06, 09:28

Если slug лежит в отдельной таблице

Сообщение brain2xml »

Добрый день!

Помогите настроить, у меня slug лежит в отдельной таблице

таблицы

Код: Выделить всё

post
id | title 

post_slug 
post_id | slug
в моделе PostSlug

Код: Выделить всё

use yii\behaviors\SluggableBehavior;

class PostSlug extends \yii\db\ActiveRecord
{

    public $title;

    public static function tableName()
    {
        return 'post_slug';
    }
public function rules()
    {
        return [
            [['slug'], 'string', 'max' => 200],
            [['slug'], 'unique'],
            [['title'], 'save'],
            [['post_id'], 'exist', 'skipOnError' => true, 'targetClass' => Post::class, 'targetAttribute' => ['post_id' => 'id']],
        ];
    }

    public function behaviors()
    {
        return [
            [
                'class' => SluggableBehavior::className(),
                'attribute' => 'title',
                'slugAttribute' => 'slug',
            ],
        ];
    }


сохранение в котроллере

Код: Выделить всё

$model_slug->title = $model->title;
$model_slug->save();
Получаю ошибку
PHP Fatal Error – yii\base\ErrorException
Maximum execution time of 30 seconds exceeded

в логах ничего конкретного.
Причем пробовал делать

Код: Выделить всё

$model_slug->slug = Inflector::slug($model->title);
без SluggableBehavior тогда сохряняет нормально

azz
Сообщения: 191
Зарегистрирован: 2016.07.06, 17:20

Re: Если slug лежит в отдельной таблице

Сообщение azz »

Код: Выделить всё

[['title'], 'save'],
А что это?

Код: Выделить всё

$model_slug->title = $model->title;
$model_slug->save();
Не совсем понимаю зачем. Не проще ли

Код: Выделить всё

$model_slug->slug = Inflector::slug($model_post->title);
или, если прописаны зависимости

Код: Выделить всё

$model_post->slug = Inflector::slug($model->title);

Ответить