2017-01-29 5 views
1

Есть ли стандарт Laravel или способ достижения этой цели в Laravel 5 или больше Спасибо заранееLaravel Синтаксис для вложенного Еогеаспа с условием где

$sql = "SELECT * FROM categories";

$result = $conn->query($sql); 


    if ($result->num_rows > 0) { 


while ($row = $result->fetch_assoc()) { 
     echo $row['category']."["; 
     $sql2 = "SELECT * FROM subCategories where category_id = ".$row['id']." limit 4"; 
     $result2 = $conn->query($sql2); 
     if ($result2->num_rows > 0) { 
      while ($row2 = $result2->fetch_assoc()) { 
       echo $row2['name']." ; "; 
      } 
     } 
     echo " ]</br>"; 
    } 
} else { 
    echo "0 results"; 
} 
+0

https://laravel.com/docs/5.3/eloquent –

ответ

0

I согласны с @Muhammad Sumon Molla Selim в определении моделей Eloquent. Но когда вы спрашиваете, как он описывает, вы столкнулись бы с N+1 issue. Вы можете ответить Eager load. Просто сделайте это так.

$categories = Category::with('subcategories')->get(); 

Тогда вы могли бы цикл, как этот

foreach ($categories as $category) { 
    foreach ($category->subcategories as $subCategory) { 
     echo $subcategory; 
    } 
} 
+0

может я применяться там, где предел непосредственно или использовать, если условие? –

0

Да, конечно. Вы можете использовать Laravel's Eloquent ORM и Model, чтобы достичь этого легко.

Во-первых, вам нужно создать две модели и определить взаимосвязь между ними. Сначала Category модель:

<?php // Category.php 
namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Category extends Model 
{ 
    protected $table = 'categories'; 

    public function subcategories() 
    { 
     return $this->hasMany(SubCategory::class); 
    } 
} 

Тогда SubCategory модель:

<?php // SubCategory.php 
namespace App; 

use Illuminate\Database\Eloquent\Model; 

class SubCategory extends Model 
{ 
    protected $table = 'subCategories'; 

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

После этого, это так же просто, как показано ниже, чтобы получить категории и подкатегории под категории:

<?php 
// get all categories 
$categories = Category::all(); 

// get subcategories for each category 
foreach($categories as $category) 
{ 
    $subCategories = $category->subcategories(); 
    foreach($subCategories as $subCategory) 
    { 
     echo $subCategory; 
    } 
}