0
こんにちは私は、これらの4つのテーブルがあります:私はすべての製品のparamsを取得することができますLaravel ORM関係
Products (id, name)
Params (id, name)
Product_Param (id, product_id, param_id)
Values (product_param_id, value)
を:
public function params() {
return $this->belongsToMany('App\Models\Param', 'product_param')->withPivot('id', 'type1_id', 'type2_id');
}
コード:
foreach($products->params as $param) {
var_dump($param)
}
そして今、私はのparamを取得する必要がありますが値。 私はこのような愚かなコードを書いた:
public static function getPPV($product_id, $param_id) {
$value = new \App\Models\ParamValue();
$value->value = NULL;
$value->id = NULL;
$pp = \App\Models\ProductParam::where('product_id','=',$product_id)->where('param_id','=',$param_id)->first();
if (!$pp) return $value;
$ppv = \App\Models\ProductParamValue::where('product_param_id','=',$pp->id)->first();
if (!$ppv) return $value;
$value->value = $ppv->productvalue->value;
$value->id = $ppv->productvalue->id;
return $value;
}
それは動作しますが、私はORMとのより良いソリューションを使用します。 Paramモデル:
public function val() {
$p = $this->hasOne('App\Models\ProductParam')->orderBy('id','desc')->where('product_id','=',$this->product_id);
$ppv = $p->getResults()->hasOne('App\Models\ProductParamValue');
$val = $ppv->getResults()->belongsTo('App\Models\ParamValue','param_value_id');
return $val;
}
しかし、Paramのモデルでは、私はプロダクトID 取得することはできません - >( 'product_idを'、 '='、の$ this - >のproduct_idを)(我々は、Product_Param(ID、PRODUCT_IDを持っていますparam_id)と私はProduct_Paramからすべての行を取得します。
ORMを書くために助けてください。
はい、できます。私はプロジェクトのチームリーダーですが、もし私がなぜそれをやりたいのか分からないので、product_idの列をid(笑顔)に変更したいのですが、それは痛みです。 –