【发布时间】:2020-08-26 14:18:56
【问题描述】:
您好,我在客户和索赔之间有这种关系
客户模型
<?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');
}
}
但我无法访问每个档案的客户数据.. 谢谢。
【问题讨论】:
-
$data是一个集合,因此您无法直接访问集合上的customers尝试获取第一个索赔客户以进行测试$data[0]->customers->contr_nom -
哦,是的,但是我怎样才能在数据表中进行 rapresenting?我需要使用 foreach 创建一个自定义集合吗?
标签: laravel eloquent datatables yajra-datatable