За последние 24 часа нас посетили 22062 программиста и 989 роботов. Сейчас ищут 885 программистов ...

Разжуйте плиз Eloquent

Тема в разделе "Laravel", создана пользователем rewuxiin, 31 июл 2019.

  1. rewuxiin

    rewuxiin Активный пользователь

    С нами с:
    17 апр 2012
    Сообщения:
    611
    Симпатии:
    87
    Отношение один ко многим в отдельной таблице.
    Насколько я понял, нужно использовать belongsTo? но если да, то как правильно?
    Привык я Join-ить, а тут засада.

    Имеем:
    модель Post и таблицу posts

    id|name|text

    1 | new | desrc

    модель Tag и таблицу tags

    id|name

    1 | новость
    2 | люди
    3 | техника

    модель PostTag и таблицу post_tags
    связи в таблице не делал, нужно ли?

    post_id|tag_id

    1 | 2
    1 | 3

    Ну и дергаю в контроллере PostController

    PHP:
    1. $post->findOrFail($request->id);
    Как мне с помощью Eloquent выдернуть тэги привязанные к этому посту?
     
  2. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.072
    Симпатии:
    1.237
    Адрес:
    там-сям
    Посты и теги связаны как многие ко многим, а значит таблица-связка нужна. Начни с родной документации , а потом уже спрашивай.
     
    rewuxiin нравится это.
  3. rewuxiin

    rewuxiin Активный пользователь

    С нами с:
    17 апр 2012
    Сообщения:
    611
    Симпатии:
    87
    Смотрю в книгу, вижу фигу - с утра сижу. Пойду еще manytomany повтыкаю.
     
  4. rewuxiin

    rewuxiin Активный пользователь

    С нами с:
    17 апр 2012
    Сообщения:
    611
    Симпатии:
    87
    а вот нащупал.
    особенно понравилось, что не забыли тех кто мудрит с названиями таблиц

     
  5. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.199
    Симпатии:
    184
  6. rewuxiin

    rewuxiin Активный пользователь

    С нами с:
    17 апр 2012
    Сообщения:
    611
    Симпатии:
    87
    Dimon2x, никогда не поздно побыть новичком ;)
    С вопросом разобрался.
    Однако попутно назрел второй:

    есть ли готовый метод создания связи при создании или обновлении поста или мой способ не так уж плох?
    связь создаю таким способом:

    PHP:
    1. //если тэг новый
    2. $newTag = Tag::firstOrCreate([
    3. 'name' => $request->input('tagnew'),
    4. 'user_id' => $request->user()->id,
    5. 'is_active' => 0
    6. ]);
    7.  
    8. //создаю пост
    9. $post = Post::create([
    10. 'name' => $request->name,
    11. 'text' => $request->description,
    12. ]);
    13.  
    14. //создаю связь
    15. $ServiceOfferTag::firstOrCreate([
    16. 'post_id' => $post->id,
    17. 'tag_id' => $newTag->id,
    18. ]);
     
  7. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.553
    Симпатии:
    1.754
    @rewuxiin, есть, и разжёван в документации
     
    rewuxiin нравится это.