За последние 24 часа нас посетили 20167 программистов и 1078 роботов. Сейчас ищут 809 программистов ...

Связи в моделях

Тема в разделе "Laravel", создана пользователем lordconst, 7 апр 2020.

  1. lordconst

    lordconst Новичок

    С нами с:
    7 дек 2019
    Сообщения:
    151
    Симпатии:
    1
    Сделал миграции, приступил к созданию связей и вот что стало интересно. Читаю документацию https://laravel.ru/docs/v5/eloquent-relationships#oo
    Взять, к примеру, связь один к одному. Там создается связь из модели user к модели phone через hasOne и обратная связь из phone к user через belongsTo. А почему нельзя сделать тот же hasOne из phone к user?
    И наконец вопрос с моими данными. Делаю такую базу, мне как лучше на будущее сделать связи: user-person через hasOne, а person-user через belongsTo или опять-таки person-user hasOne?
    Как предусмотреть это? Или можно указать и hasOne и belongsTo одновременно в одной модели?
     

    Вложения:

  2. lordconst

    lordconst Новичок

    С нами с:
    7 дек 2019
    Сообщения:
    151
    Симпатии:
    1
    Ну и вдогонку, раз уж создал тему. В той же статье в документации модель User наследуется от Model, а у меня, т.к. она из-под коробки доступна, наследуется от Authenticatable. С этими связями как оставить-то? Чтобы и связи нормально реализовались и чтобы механизм регистрации/входа не сбить
     
  3. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.548
    Симпатии:
    1.754
    hasOne из user на phone означает, что в таблице phone есть поле user_id, а belongsTo из phone на юзера означает, что в таблице phone есть поле userId, в этом разница.

    Именно так

    А посмотреть, что такое этот Authenticatable через Ctrl+click слабо в IDE?
     
  4. lordconst

    lordconst Новичок

    С нами с:
    7 дек 2019
    Сообщения:
    151
    Симпатии:
    1
    Спасибо, а дальше? Правильно ли я мыслю?
    ticket-result_ticket через hasOne, а result_ticket-ticket через hasOne; ticket-comment через hasMany, а comment-ticket через belongsTo? а с comment-person как быть? Там получается что один человек может написать несколько комментариев
     
  5. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.548
    Симпатии:
    1.754
    Есть разные типы связей. Помимо hasOne. Все описаны по вашей ссылке, хоть и устаревший, но у вас, помнится, с английским проблемы...
    --- Добавлено ---
    А вообще, это всё с неба не свалилось. В теории реляционных баз данных есть все эти связи между таблицами: один-к-одному, один-ко-многим, многие-ко-многим...
     
  6. lordconst

    lordconst Новичок

    С нами с:
    7 дек 2019
    Сообщения:
    151
    Симпатии:
    1
    Это понятно, из курса универа даже помню. Но применительно к фреймворку и последующей обработки данных решил спросить.
    Верно?
     
  7. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.548
    Симпатии:
    1.754
    Ну я не буду разбирать твою задачу так подробно. Особенно если помнишь из курса универа :)
     
  8. lordconst

    lordconst Новичок

    С нами с:
    7 дек 2019
    Сообщения:
    151
    Симпатии:
    1
    А если помню на уровне: "были слова похожие"?))
    --- Добавлено ---
    А кто-нибдь другой просвятит?)
     
  9. lordconst

    lordconst Новичок

    С нами с:
    7 дек 2019
    Сообщения:
    151
    Симпатии:
    1
    А одновременно может быть несколько отношений? Две таблицы связать как hasOne и belongsTo друг с другом