Laravel Eloquent:获取相关表的值而不是前键

时间:2018-08-31 07:18:14

标签: php laravel eloquent

我正在使用雄辩的查询

$apv = $node->products()->with('brand','skus.defaultImage')->get();

获取所有产品及其变体和其他相关模型。这是我得到的集合:

在外部数组中像supplier_id这样的地方 和option_id数组中的outerarray>skus>values,我需要从(例如'sipplier_name')表列中获取相应的值,而不仅仅是外键。

3 个答案:

答案 0 :(得分:0)

您可以使用追加

class Product extends Model
{
     ....
     ....

     protected $appends = ['supplier_name'];

     public function supplier()
     {
          return $this->belongsTo(Supplier::class);
     }

     public function getSupplierNameAttribute()
     {
           return $this->supplier()->supplier_name;
     }
} 

//示例使用

$product = Product::first();
$product->supplier_name;

答案 1 :(得分:0)

class Product extends Model
{
     ....
     ....


     public class supplier()
     {
          return $this->belongsTo('App\Supplier','supplier_id');
     }

} 

现在与供应商取得产品

$product = Product::where('id',$product_id)->with('supplier')->first();
echo $supplier_name= $product->supplier['supplier_name'];

答案 2 :(得分:0)

谢谢大家。我在Model中添加了join语句

class Variant extends Model
{
    protected $guarded = ['id'];


    public function optval()
    {
        $intance = $this->hasMany(OptionValue::class);
         $intance->join('options', 'option_value.option_id', '=', 'options.id')            
            ->get(['option_label','value']);
     return $intance;
    }

}