![](/img/trans.png)
[英]Laravel Eloquent Relationship: How to get parent of parent information from child using Laravel eloquent model relationship?
[英]laravel get parent data from child relationship
嗨,我在客户和索赔之间有这种关系
客户模型
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Customers extends Model
{
public $primaryKey = 'id';
protected $fillable = [
'contr_nom',
'contr_cog',
'benef_nom',
'benef_cog',
'email',
'polizza',
'targa',
'iban',
'int_iban',
'cliente',
];
public function claims()
{
return $this->hasMany(Claims::class);
}
public function refunds()
{
return $this->hasManyThrough(Refunds::class, Claims::class);
}
}
理赔模式
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Claims extends Model
{
public $primaryKey = 'id';
protected $fillable = [
'dossier',
'date_cla',
];
public function refunds()
{
return $this->hasMany(Refunds::class);
}
public function customers()
{
return $this->belongsTo(Customers::class,'customers_id');
}
}
我需要将索赔和客户的一些信息放入数据表中
他们有父子关系作为数据表的第一列和第二列,我从 Claims 表中放置了 id 和 dossier,但是我如何从 Customer 表中为每个 dossier 获取例如 contr_nom、contr_cog、email、polizza 等?
我试过这个控制器
class ComptaController extends Controller
{
public function index(Request $request){
if ($request->ajax()) {
$data = Claims::with('customers')->get();
/*Cannot access to Customers from $data but i can see in the relationship*/
dd($data->customers->contr_nom); GIVE ME ERROR
return Datatables::of($data)
->addIndexColumn()
->addColumn('action', function($row){
$btn = '<a href="javascript:void(0)" class="edit btn btn-success btn-sm">Edit</a> <a href="javascript:void(0)" class="delete btn btn-danger btn-sm">Delete</a>';
return $btn;
})
->rawColumns(['action'])
->make(true);
}
return view('pages.compta');
}
}
但我无法访问每个档案的客户数据.. Thx。
foreach($data->customers as $customer){
dd($customer->contr_nom);
}
或者
Claims::with(array('customer'=>function($query){
$query->select('id','contr_nom');
}))->get();
使用数据表,我想您可以通过添加具有关闭方法的列来添加相关的客户详细信息,例如
return Datatables::of($data)
->addIndexColumn()
->addColumn('contr_nom',function($row){
return $row->customers->contr_nom;
})
->addColumn('contr_cog',function($row){
return $row->customers->contr_cog;
})
->addColumn('email',function($row){
return $row->customers->email;
})
//.. and so on otehr columns
->addColumn('action', function($row){
$btn = '<a href="javascript:void(0)" class="edit btn btn-success btn-sm">Edit</a> <a href="javascript:void(0)" class="delete btn btn-danger btn-sm">Delete</a>';
return $btn;
})
->rawColumns(['action'])
->make(true);
我猜你有每一个要求客户因此它的更好,如果你重命名customers()
到customer()
要求模型更有意义
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.