Получить данные из 3 таблиц, которые относятся к одной таблице с отношением HMany - PullRequest
0 голосов
/ 27 июня 2019

У меня есть одна таблица продуктов и три другие таблицы (напряжение, ампера, категория), теперь таблица продуктов связывает все эти три таблицы с отношением один ко многим, как voltage,ampere,category hasMany Products и Products belongsTo voltage,ampere,category, и каждый идентификатор таблицы используется как внешнийвведите таблицу продуктов, например, products_table : id,name,voltage_id,ampere_id,category_id. Теперь, как получить все данные из этой таблицы и отобразить их в HTML-таблице продуктов.

Модель продукта

 public function ampere(){
    return $this->belongsTo('App\Ampere');
}
 public function category(){
    return $this->belongsTo('App\Category');
}
 public function voltage(){
    return $this->belongsTo('App\Voltage');
}

Модель Ампера

public function products(){
    return $this->hasMany('App\Product');
}

Категория Модель

 public function brands(){
    return $this->hasMany('App\Brand');
}
public function products(){
    return $this->hasMany('App\Product');
}

Модель напряжения

public function products(){
    return $this->hasMany('App\Product');
}

Вот мой вид лезвия

<tr>
  <td class="details">
    a href="#">Product name</a>
   <ul>
      <li><span>category</span></li>
      <li><span>Ampere</span></li>
      <li><span>Voltage</span></li>
    </ul>
   </td>
</tr>

это то, что я уже пробовал

public function showAllProducts(){
    $products=Product::all();
    $products = Product::with('category','ampere','voltage')->get();

    foreach ($products as $product){
        echo $product->name." ";
        foreach ($product->ampere as $amp){
            echo $amp->name;
        }
    }
}

1 Ответ

2 голосов
/ 27 июня 2019

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

$products = Product::with(['category','ampere','voltage'])->get();

тогда вы можете напрямую использовать $ product-> category-> name, например.

еще одна вещь, которую я заметил, это то, что вы используете echo в вашем showAllProducts, который не будет работать. что вам нужно сделать, чтобы вызвать функцию view и передать $ products с помощью функции with.

public function showAllProducts()
{
  $products = Product::with(['category','ampere','voltage'])->get();
  return view("the_name_of_your_view_file")->with("products,$products);
}

теперь, на ваш взгляд, благодаря лезвию мы можем зациклить массив $products и показать каждый продукт вместе с его амперой, напряжением и категорией.

@for ( $products as $product )
<tr>
  <td class="details">
    <a href="#">{{$product->name}}</a>
   <ul>
      <li><span>{{$product->category->name}}</span></li>
      <li><span>{{$product->ampere->name}}</span></li>
      <li><span>{{$product->voltage->name}}</span></li>
    </ul>
   </td>
</tr>
@endfor
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...