使用 laravel 8 在从数据库中获取的下拉列表中显示数据
show the data in dropdown fetched from database using laravel 8
我必须在产品形式的下拉列表中显示类别值,给定的代码来自我的观点,错误未定义 $categories.this 是我在 laravel 中的第一个代码我不知道如何更改其他 files.which 变量用于 foreach?或者我必须在 ProductController 中创建新函数?
<form action="/upload_product" method="post">
@csrf
<label>Choose Categories</label>
<select name="category_id" id="category" class="category">
<option disable selected>--select category--</option>
@foreach($categories as $item)
<option value="{{ $item->id }}">{{ $item->name}}</option>
@endforeach
</select>
<input type="text" name="name" placeholder="name">
<input type="number" name="sale_price" placeholder="sale_price">
</form>
型号Product.php
class Product extends Model
{
use HasFactory;
protected $table = 'products';
public $timestamps = true;
public function category(){
return $this->belongsTo('App\Models\Category');
}
}
型号 Category.php
class Category extends Model
{
use HasFactory;
public $fillable = [ 'name' ];
protected $dates = [ 'deleted_at' ];
public $timestamps = true;
public function products (){
return $this->hasMany('App\Models\Product');
}
}
ProductController.php
<?php
namespace App\Http\Controllers;
use App\Models\Product;
use App\Models\Category;
use Illuminate\Http\Request;
class ProductController extends Controller
{
public function index()
{
$products = Product::all();
return view('products/index', ['products'=>$products]);
}
public function view()
{
$products = Product::with('category')->get();
$categories = Category::with('products')->get();
return view ('product.view')-> with([
'products' => $products,
'categories' => $categories,
]);
}
您的索引文件中没有 $categories
。
根据 index
方法,您发送的只是产品:
public function index()
{
$products = Product::all();
return view('products/index', ['products'=>$products]);
}
所以也添加类别。
你必须像下面这样使用
public function index(){
$products = Product::all();
$categories = Category::with('products')->get();
return view('products.index', compact('products','categories'));
}
public function index()
{
$products = Product::get();
return view('products/index', ['products'=>$products]);
}
您可以通过三种方式做到这一点
public function index(){
$products = Product::all();
$categories = Category::with('products')->get();
return view('products.index', compact('products','categories'));
}
public function index(){
$products = Product::all();
$categories = Category::with('products')->get();
return view('products.index')->with(['products'=>$products,'categories'=>$categories]));
}
public function index(){
$data['products'] = Product::all();
$data['categories'] = Category::with('products')->get();
return view('products.index',$data);
}
我必须在产品形式的下拉列表中显示类别值,给定的代码来自我的观点,错误未定义 $categories.this 是我在 laravel 中的第一个代码我不知道如何更改其他 files.which 变量用于 foreach?或者我必须在 ProductController 中创建新函数?
<form action="/upload_product" method="post">
@csrf
<label>Choose Categories</label>
<select name="category_id" id="category" class="category">
<option disable selected>--select category--</option>
@foreach($categories as $item)
<option value="{{ $item->id }}">{{ $item->name}}</option>
@endforeach
</select>
<input type="text" name="name" placeholder="name">
<input type="number" name="sale_price" placeholder="sale_price">
</form>
型号Product.php
class Product extends Model
{
use HasFactory;
protected $table = 'products';
public $timestamps = true;
public function category(){
return $this->belongsTo('App\Models\Category');
}
} 型号 Category.php
class Category extends Model
{
use HasFactory;
public $fillable = [ 'name' ];
protected $dates = [ 'deleted_at' ];
public $timestamps = true;
public function products (){
return $this->hasMany('App\Models\Product');
}
}
ProductController.php
<?php
namespace App\Http\Controllers;
use App\Models\Product;
use App\Models\Category;
use Illuminate\Http\Request;
class ProductController extends Controller
{
public function index()
{
$products = Product::all();
return view('products/index', ['products'=>$products]);
}
public function view()
{
$products = Product::with('category')->get();
$categories = Category::with('products')->get();
return view ('product.view')-> with([
'products' => $products,
'categories' => $categories,
]);
}
您的索引文件中没有 $categories
。
根据 index
方法,您发送的只是产品:
public function index()
{
$products = Product::all();
return view('products/index', ['products'=>$products]);
}
所以也添加类别。
你必须像下面这样使用
public function index(){
$products = Product::all();
$categories = Category::with('products')->get();
return view('products.index', compact('products','categories'));
}
public function index()
{
$products = Product::get();
return view('products/index', ['products'=>$products]);
}
您可以通过三种方式做到这一点
public function index(){
$products = Product::all();
$categories = Category::with('products')->get();
return view('products.index', compact('products','categories'));
}
public function index(){
$products = Product::all();
$categories = Category::with('products')->get();
return view('products.index')->with(['products'=>$products,'categories'=>$categories]));
}
public function index(){
$data['products'] = Product::all();
$data['categories'] = Category::with('products')->get();
return view('products.index',$data);
}