有两个模型。产品和图像 在“我的产品型号”中:
// one to many relationship with images table
public function images()
{
return $this->hasMany('App\image');
}
图片模型
public function product()
{
return $this->belongsTo('App\product');
}
ProductController
public function productDetail($slug)
{
$product = product::where([
['slug',$slug],
['seller_id' ,Auth::id()],
])->first();
//$storagePath = Storage::get(['images']);
//get the image of that product
//$image = asset('storage/product_images'.$product->images);
if($product)
{
$image = Storage::url($product->images); // give the image path from product table
//give images from the image table
$product_image = \App\product::find(11)->images;
$arr = array();
foreach(\App\product::find($product->id)->images() as $i)
{
array($arr,$i->image);
}
dd($arr); // problem returning always null
return view('backEnd.seller.product_detail',compact('product','image'));
}
问题陈述: 在我的控制器中,当我尝试获取特定产品的所有图像时,我得到了 Null 。我想在一天前解决这个问题。请帮助我,我想念哪个?
图像表迁移
public function up()
{
Schema::create('images', function (Blueprint $table){
$table->increments('id');
$table->unsignedInteger('product_id');
$table->string('image');
$table->timestamps();
});
}
产品表迁移
public function up()
{
Schema::create('products', function (Blueprint $table) {
$table->increments('id');
$table->unsignedInteger('seller_id');
$table->unsignedInteger('category_id');
$table->string('product');
$table->text('discription');
$table->string('type')->nullable();
$table->date('date');
$table->string('images');
$table->string('slug');
$table->integer('sold_qty')->default(0);
$table->timestamps();
});
}
注意: 我确保在我的图像表中有5条product_id 11记录。请帮助谢谢
答案 0 :(得分:0)
您必须在数据库中建立关系。您可以通过将其添加到图像迁移中来实现:
$table->foreign('product_id')->references('id')->on('product');
答案 1 :(得分:0)
我假设您的型号名称为Product
和Image
。
请检查以下更改是否可以满足您的需求...
return $this->hasMany('App\Image');
请注意,型号名称以大写字母开头,
return $this->belongsTo('App\Product');
和数据库约束(例如@ steve-trap)不是必需的。无论如何,它将引入一个约束,因此您不能为不存在的产品添加图像。
然后进入控制器:
foreach (App\Product::find($product->id)->images as $image) {
$arr[] = $image->image;
}
答案 2 :(得分:0)
我通过以下方式解决了此问题:
结论: 如果您使用列名,则不要使用该列名来建立关系。 并始终以大写字母开头。