У меня есть 2 репо для таксономии и его детей. Ive и т. Д., И работали через некоторый код, чтобы очистить его и удалить красноречивые из моих контроллеров, а также сделать их тощими.Применение метода репозитория для моделей отношений
Я изо всех сил пытаюсь понять, как применять методы к отношениям с детьми, не получая ошибок. Пожалуйста, поймите, чтобы я научился этому, но чувствую, что я потерял что-то очевидное и обойдусь в кругах, теряя следы всего, что ive пробовал до сих пор.
MyController.php
$taxonomy = $taxonomies->findBySlug($this->taxonomy_name);
if (isset($taxonomy->id)) {
// The below line worked and what im trying to replace below to remove firstOrCreate from my controller
//$taxonomy->term()->firstOrCreate(array('name' => $request->name, 'slug' => str_slug($request->name)));
$taxonomy->term()->createTermFromSlug($request->name);
}
TaxonomyInterface.php
interface TaxonomyInterface{
public function createTermFromSlug($term_name);
}
DBTaxonomyRepository
class DBTaxonomyRepository
extends AbstractDBRepository
implements TaxonomyInterface
{
protected $table = 'taxonomy';
public $timestamps = false;
public function term()
{
return $this->hasMany('App\Repositories\DBTaxonomyTermRepository', 'taxonomy_id', 'id');
}
/**
* Create term based on unique slug.
*
* @param $term_name
* @internal param $name
*/
public function createTermFromSlug($term_name)
{
$term = $this->firstOrCreate(array(
'slug' => str_slug($term_name)
));
$term->name = $term_name;
$term->save();
}
}
Я пробовал так много вещей, теперь им явно не хватает чего-то фундаментального, где я не могу просто изучить его с помощью проб и ошибок. Это текущее состояние, которое я оставил.
В двух словах я хотел бы применить методы репозитория к объекту таксономии для его сущностей, таким образом, развязывая красноречие от контроллера.
Я хочу абстрагировать это после того, чтобы я мог повторно использовать его во множестве различных контроллеров, обрабатывающих разные таксономии.
Выдает ли «AbstractDBRepository» Красноречивый? – user3158900
Да. 'use Illuminate \ Database \ Eloquent \ Model; abstract class AbstractDBRepository extends Model' – Jimbo