За последние 24 часа нас посетили 17880 программистов и 1569 роботов. Сейчас ищут 1247 программистов ...

Метод attach

Тема в разделе "Laravel", создана пользователем Dimon2x, 15 май 2018.

  1. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.210
    Симпатии:
    185
    Какой класс нужно подключить, что бы нашёлся метод attach?

    PHP:
    1. public function store(Request $request)
    2.     {
    3.         $article = Article::create($request->all());
    4.         if($request->input('categories')):
    5.             $article->categories()->attach($request->input('categories'));
    6.         endif;
    7.        
    8.         return redirect()->route('admin.article.index');
    9.     }
    PHP:
    1.  public function categories()
    2.     {
    3.         return $this->morphMany('App\Category', 'categoryable');
    4.     }
    Это не работает

    PHP:
    1. use Illuminate\Database\Eloquent\Model;
    Call to undefined method Illuminate\Database\Query\Builder::attach()
     
  2. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    $article у тебя чей объект хранит?
    get_class
     
  3. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.210
    Симпатии:
    185
    @Zuldek

    PHP:
    1. <?php
    2.  
    3. namespace App;
    4.  
    5. use Illuminate\Database\Eloquent\Model;
    6.  
    7. use Illuminate\Support\Str;
    8.  
    9. class Article extends Model
    10. {
    11.     protected $fillable = ['title', 'slug', 'description_short', 'description',
    12.         'image', 'image_show', 'meta_title', 'meta_description',
    13.         'meta_keyword', 'published', 'created_by', 'modified_by'];
    14.    
    15.     public function categories()
    16.     {
    17.         return $this->morphMany('App\Category', 'categoryable');
    18.     }
    19.    
    20.     public function setSlugAttribute($value) {
    21.       $this->attributes['slug'] = Str::slug( mb_substr($this->title, 0, 40) . "-" . \Carbon\Carbon::now()->format('dmyHi'), '-');
    22.     }
    23. }
    --- Добавлено ---
    @Zuldek App\Article
     
  4. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    А в категориях что?
     
  5. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.210
    Симпатии:
    185
    @romach

    PHP:
    1. <?php
    2.  
    3. namespace App;
    4.  
    5. use Illuminate\Database\Eloquent\Model;
    6. use Illuminate\Support\Str;
    7.  
    8. class Category extends Model
    9. {
    10.    
    11.      protected $fillable = ['title', 'slug', 'parent_id', 'published', 'created_by', 'modified_by'];
    12.     // Mutators
    13.     public function setSlugAttribute($value) {
    14.       $this->attributes['slug'] = Str::slug( mb_substr($this->title, 0, 40) . "-" . \Carbon\Carbon::now()->format('dmyHi'), '-');
    15.     }
    16.    
    17.     public function children()
    18.     {
    19.         return $this->hasMany(self::class, 'parent_id');
    20.     }
    21. }
     
  6. Artem Z.

    Artem Z. Новичок

    С нами с:
    1 апр 2018
    Сообщения:
    27
    Симпатии:
    5
    Я не очень часто с lara общаюсь но вроде чтобы attach испольовать нужно чтобы ф-ия возвращала BelongsToMany, попробуй заменить `morphMany` на `MorphToMany`, которая от нужного класса наследуется
     
    Dimon2x нравится это.
  7. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.210
    Симпатии:
    185
    только второй день изучаю лару
    --- Добавлено ---
    @Artem Z. Спасибо, заменил и помогло
     
  8. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719