foreach 中只有 return 一行
Only return one row in foreach
我从 Laravel 开始,在 laravel blade.
上获取查询结果时遇到问题
从通过查询 MySQL 'mysql' 获得的列表中,我想检查它在另一个 'tienda' 数据库的另一个 table 中的名称。
一切正常,但它只是return第二次查询的最后一个值,它并没有return在$products查询中得到的对应名称的所有值$products_name.
控制器
$productos = [
'id' => $id
];
$products = DB::connection('mysql')
->SELECT("SELECT * FROM promociones_product WHERE id_promo = $id", $productos);
foreach ($products as $product)
{
$products_name = collect(DB::connection('tienda')
->table('ps_product_lang')
->where('id_product', $product->id_product)
->get(['name', 'id_product']));
}
return view('promociones-products')->with('promo', $products_name);
Blade
@foreach($promo as $product)
<tr>
<td>{{ $product->id_product }}</td>
<td>{{ $product->name }}</td>
</tr>
@endforeach
我需要对 'mysql' 数据库进行查询,并根据这些结果在另一个数据库中查询它的名称,所有值都会打印在屏幕上。
所以您提供的代码存在一些问题。
首先,在您的循环中,您将在每个循环上创建一个名为 'products_name' 的新集合,该集合会不断覆盖自身。
有很多方法可以解决这个问题,但我会怎么做:
$promo = []; // Initialise a new array called promo
foreach ($products as $product)
{
// Append the collection to the new array
$promo[] = collect(DB::connection('tienda')
->table('ps_product_lang')
->where('id_product', $product->id_product)
->get(['name', 'id_product']));
}
现在您有一个数组,其中包含集合中的所有产品。
现在获取该数据的循环应该可以工作了。
然后您可以 return 使用几种方法将数据显示到视图中,我的首选方法确实是 compact()
如下所示:
return view('promociones-products', compact('promo'));
compact()
会做的是抓取视图中提到的任何变量名称并将其传递给视图。此压缩包会将 $promo
变量传递给视图。
我从 Laravel 开始,在 laravel blade.
上获取查询结果时遇到问题从通过查询 MySQL 'mysql' 获得的列表中,我想检查它在另一个 'tienda' 数据库的另一个 table 中的名称。
一切正常,但它只是return第二次查询的最后一个值,它并没有return在$products查询中得到的对应名称的所有值$products_name.
控制器
$productos = [
'id' => $id
];
$products = DB::connection('mysql')
->SELECT("SELECT * FROM promociones_product WHERE id_promo = $id", $productos);
foreach ($products as $product)
{
$products_name = collect(DB::connection('tienda')
->table('ps_product_lang')
->where('id_product', $product->id_product)
->get(['name', 'id_product']));
}
return view('promociones-products')->with('promo', $products_name);
Blade
@foreach($promo as $product)
<tr>
<td>{{ $product->id_product }}</td>
<td>{{ $product->name }}</td>
</tr>
@endforeach
我需要对 'mysql' 数据库进行查询,并根据这些结果在另一个数据库中查询它的名称,所有值都会打印在屏幕上。
所以您提供的代码存在一些问题。
首先,在您的循环中,您将在每个循环上创建一个名为 'products_name' 的新集合,该集合会不断覆盖自身。
有很多方法可以解决这个问题,但我会怎么做:
$promo = []; // Initialise a new array called promo
foreach ($products as $product)
{
// Append the collection to the new array
$promo[] = collect(DB::connection('tienda')
->table('ps_product_lang')
->where('id_product', $product->id_product)
->get(['name', 'id_product']));
}
现在您有一个数组,其中包含集合中的所有产品。 现在获取该数据的循环应该可以工作了。
然后您可以 return 使用几种方法将数据显示到视图中,我的首选方法确实是 compact()
如下所示:
return view('promociones-products', compact('promo'));
compact()
会做的是抓取视图中提到的任何变量名称并将其传递给视图。此压缩包会将 $promo
变量传递给视图。