我是Laravel(和OOP)的新手,我正在组建一家商店。我已经为我的产品图片建立了一个关系,它可以按照我的需要运行,但我只是想检查一下我是否正确/高效地完成了这项工作。如果有经验的Laravel可以将注意力集中在下面并建议改进或给我一些反馈,我们将不胜感激。
我的产品有很多产品图片。以下是我的产品和产品模型:
产品:
class Products extends Eloquent {
public static $table = 'core_Products';
........
public function ProductImages(){
return $this->has_many('ProductImage', 'product_id');
}
}
Productimage:
class ProductImage extends Eloquent{
public static $table = 'core_productimages';
public function product(){
return $this->belongs_to('Product');
}
}
我的产品控制器(这是我认为我可以更高效地工作的地方。当然我不需要传递product_id来检索图像。模型不应该已经知道这个吗?):
class Store_Product_Controller extends Base_Controller {
public function action_index($serfURL = "", $intSectionID, $pSerfURL = "", $intProductID)
{
.......
$view->productImages = Products::find($intProductID)->ProductImages()->get();
return $view;
}
}
最后,我的观点:
foreach ($productImages as $image){
echo $image->strImageURI . "<br/>";
}
答案 0 :(得分:0)
在您的“产品”模型中,您可以调用方法images()
,以便在控制器中只需拨打产品上的->images()
即可。此外,您的模型应该是单一的,并且您的has_many查询不需要'product_id'
。它看起来像这样:
产品型号:
class Product extends Eloquent {
public static $table = 'core_Products';
// ...
public function images() {
return $this->has_many('ProductImage');
}
}
ProductImage Model:
class ProductImage extends Eloquent {
public static $table = 'core_productimages';
public function product() {
return $this->belongs_to('Product');
}
}
产品总监:
class Store_Product_Controller extends Base_Controller {
public function action_index($serfURL = "", $intSectionID, $pSerfURL = "", $intProductID) {
// ...
$view->product = Product::find($intProductID);
return $view;
}
}
产品视图:
foreach ($product->images as $image) {
echo $image->strImageURI . "<br/>";
}