SQL Таблица отношений с Laravel - PullRequest
0 голосов
/ 27 марта 2020

Я довольно новичок в Laravel и в основном большую часть своего времени занимался разработкой Codeigniter в прошлом, так как это то, чем занимается моя работа по большей части.

В настоящее время я создаю веб-сайт клиента, а также создаю собственную CMS (как для опыта, так и для конкретных потребностей клиента).

В настоящее время я пытаюсь понять, как бороться с отношения в Laravel / Eloquent, например, у меня есть таблица products. Каждый продукт может иметь type. Я храню эти типы в отдельной таблице, чтобы иметь возможность лучше контролировать их в будущем, когда контент начнет накапливаться. Все, что мне нужно, это запрос, чтобы получить все продукты с их типом. В других средах я мог бы просто сделать это, используя построитель запросов для определения столбцов и объединений, однако из-за того, как работает Eloquent, я изо всех сил пытаюсь найти способ сделать это!

Просто для небольшого контекста, в CMS будет иметь данные о продуктах, которые будут отображать все продукты в системе, а один из столбцов будет type, однако я хочу показать название тип, а не id.

Возможно, я глуп, поэтому не стесняйтесь указывать на что-то очевидное!

Ответы [ 2 ]

0 голосов
/ 28 марта 2020

То, что вы ищете, это «Eager Loading», которая находится здесь в документации: https://laravel.com/docs/5.8/eloquent-relationships#eager -loading

В их примере на сайте вы можете заменить их " Закажите "с вашим" Продуктом ", а затем их" Автор "с вашим" Типом ", и вы добьетесь того, что пытаетесь сделать.

Если вы хотите загрузить отношения в представлениях, то есть, используя Blade, вам нужно будет сделать что-то вроде следующего:

@foreach($products as $product)
  <div> {{ $product->type->name }} </div>
@endforeach
0 голосов
/ 28 марта 2020

вы можете искать функцию with(), это будет полезно в этом: в вашем примере вам нужно связать модель product с моделью type, чтобы в продукте вы добавит

`public function type()
    {
      return $this->hasOne(Type::class);
    }`

и в типе add

public function Product()
{
  return $this->belongsTo(Product::class);
}

, и ваш запрос будет

$result=Product::with("type")->get();

, что вернет строку связанного типа с каждой строкой связанного продукта как в этом примере получите пользователя с профилем

, и вы можете получить имя типа для каждой строки продукта из

foreach($result as $res){
    $type_name=$res->type->name;
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...