Size: a a a

2020 December 21

MV

Max Volcov in Laravel Pro
<?php
namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Cviebrock\EloquentSluggable\Sluggable;
use Kalnoy\Nestedset\NodeTrait;
use Illuminate\Support\Str;

class Category extends Model
{
   use NodeTrait;
   use Sluggable;

   protected $table = 'categories';
источник

MV

Max Volcov in Laravel Pro
По одному оба пакета работают нормально. Однако при подключении двух пакетов, возникает сообщение об ошибке.
источник

MV

Max Volcov in Laravel Pro
Symfony\Component\ErrorHandler\Error\FatalError
Trait method replicate has not been applied, because there are collisions with other trait methods on App\Models\Category
источник

MV

Max Volcov in Laravel Pro
Прошу помощи сообщества: как решить проблему?
источник

А

Антон in Laravel Pro
Max Volcov
Прошу помощи сообщества: как решить проблему?
Никак. Если бы ты управлял кодом, то мог бы сделать так:

use NodeTrait, Sluggable {
  Sluggable::replicate() insteadof ...;
};


Но метод replicate() юзает вендор. Поэтому перепиши конфликтующий трейт на свой.
источник

p

paltovkone in Laravel Pro
Max Volcov
Прошу помощи сообщества: как решить проблему?
источник

А

Антон in Laravel Pro
Это не будет работать.

final class Category
{
   use NodeTrait {
   NodeTrait::replicate as replicateNodeTrait;
   }
   use Sluggable {
   Sluggable::replicate insteadof NodeTrait;
   }
}
источник

MV

Max Volcov in Laravel Pro
Благодарю, но получаю другую ошибку,
источник

MV

Max Volcov in Laravel Pro
Class App\Models\Category contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (App\Models\Category::sluggable)
источник

MV

Max Volcov in Laravel Pro
Антон
Никак. Если бы ты управлял кодом, то мог бы сделать так:

use NodeTrait, Sluggable {
  Sluggable::replicate() insteadof ...;
};


Но метод replicate() юзает вендор. Поэтому перепиши конфликтующий трейт на свой.
Где посмотреть, как переписать конфликтующий трейт на свой. Если не трудно, подскажите.
источник

А

Антон in Laravel Pro
Max Volcov
Где посмотреть, как переписать конфликтующий трейт на свой. Если не трудно, подскажите.
Создаешь свой трейт, копирующий содержимое конфликтующего в него и переименовываешь методы.
источник

MV

Max Volcov in Laravel Pro
Антон
Создаешь свой трейт, копирующий содержимое конфликтующего в него и переименовываешь методы.
Благодарю, за подсказку. Пожалуй прощебудет отказаться от пакета eloquent-sluggable, и организовать ЧПУ по другому...
источник

VT

Vadym Trofymenko in Laravel Pro
уу тры тысячи грывэнь
источник

DM

Dmitry M in Laravel Pro
>Каждый месяц на Пасиве
источник

DM

Dmitry M in Laravel Pro
ну такое
источник

VM

Vladimir Makarov in Laravel Pro
Кому-нибудь приходилось создавать модели как анонимные классы? Оно вообще живёт или таким лучше не заниматься?
источник

А

Антон in Laravel Pro
Vladimir Makarov
Кому-нибудь приходилось создавать модели как анонимные классы? Оно вообще живёт или таким лучше не заниматься?
Зачем?
источник

VM

Vladimir Makarov in Laravel Pro
Антон
Зачем?
Есть структура, состоящая из 3х таблиц для каждой сущности, которые активно добавляются.
Писать на каждую по 3 класса и 3 репозитория желания нет от слова совсем. Вот и пришла идея спавнить их в общей фабрике и там только ставить свойство $table
источник

ДТ

Дмитрий Тремасов... in Laravel Pro
Наверное если сущности одинаковые и отличаются только именем таблицы то и таблица должна быть одна?
источник

DA

Dave Aios in Laravel Pro
Дмитрий Тремасов
Наверное если сущности одинаковые и отличаются только именем таблицы то и таблица должна быть одна?
наверно нужно поставить аналогию - что лучше 4 коробки с говном или одна большая коробка с говном.
источник