Laravel 带 where 条件的嵌套 foreach 的语法
Laravel Syntax for nested foreach with where condition
在 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";
}
当然可以。您可以使用 Laravel 的 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;
}
}
我同意 in defining Eloquent
models. But when you query in the way he describes you'd face N+1 issue。你可以Eager load
来解决。就这样吧。
$categories = Category::with('subcategories')->get();
然后你可以像这样循环
foreach ($categories as $category) {
foreach ($category->subcategories as $subCategory) {
echo $subcategory;
}
}
在 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";
}
当然可以。您可以使用 Laravel 的 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;
}
}
我同意 Eloquent
models. But when you query in the way he describes you'd face N+1 issue。你可以Eager load
来解决。就这样吧。
$categories = Category::with('subcategories')->get();
然后你可以像这样循环
foreach ($categories as $category) {
foreach ($category->subcategories as $subCategory) {
echo $subcategory;
}
}