За последние 24 часа нас посетили 21452 программиста и 1066 роботов. Сейчас ищут 879 программистов ...

Отношения один-к-одному

Тема в разделе "Laravel", создана пользователем Konstant1n, 16 сен 2019.

Метки:
  1. Konstant1n

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

    С нами с:
    14 авг 2017
    Сообщения:
    273
    Симпатии:
    1
    Адрес:
    Волгоград
    Всем привет!
    Никак не могу вывести данные из связанных таблиц. Есть таблица новостей и картинок.
    Таблица новостей - news: id, title, content, id_img1, id_img2.
    Таблица картинок - images: id title, file_name.

    Связь: news.id_img1 - images.id, news.id_img2 - images.id.

    Делаю выборку всех новостей. Как мне при этом выбрать картинки по id?
     
  2. rewuxiin

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

    С нами с:
    17 апр 2012
    Сообщения:
    611
    Симпатии:
    87
  3. Konstant1n

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

    С нами с:
    14 авг 2017
    Сообщения:
    273
    Симпатии:
    1
    Адрес:
    Волгоград
  4. Алекс8

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

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    а это точно хорошая идея ?? а если надо будет сделать больше двух изображений для новости?
    и тут получается что картинка имеет новость)) а не новость картинку))
     
  5. rewuxiin

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

    С нами с:
    17 апр 2012
    Сообщения:
    611
    Симпатии:
    87
    даже в русскоязычной устаревшей доке все написано про отношения.
     
  6. vvas

    vvas Новичок

    С нами с:
    9 апр 2018
    Сообщения:
    50
    Симпатии:
    10
    Если связи описаны в классе модели, то ты можешь обращаться к связанному объекту как-то так:
    PHP:
    1. $news = News::find(1);
    2. echo $news->image1->filename;
    Если даже не описаны, ты можешь изобразить SQL JOIN средствами Eloquent:
    PHP:
    1. $newsWithImage = News::join('images', 'images.id', '=', 'news.img1_id')
    2.   ->select('news.*', 'images.filename')
    3.   ->first();
    4. echo $newsWithImage->filename;
     
  7. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.554
    Симпатии:
    1.754
    Если один к одному прописан, то для жадной выборки используется with:
    PHP:
    1. $news = News::query()->with("img1")->all();
     
  8. Konstant1n

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

    С нами с:
    14 авг 2017
    Сообщения:
    273
    Симпатии:
    1
    Адрес:
    Волгоград
    новость имеет картинку маленькую и большую и все. больше там не нужны картинки. это же не альбом