【发布时间】:2019-03-23 14:00:08
【问题描述】:
我有客户被归类为(个人-公司),我想从主表和子表中获取所有客户信息到一个查询中,我尝试了很多次,但我没有找到解决方案..我的尝试结束本主题
我的桌子:
客户类型
idtype
客户
idaddresscustomer_type_id
customer_individual
idfirst_namelast_namecustomer_id
客户公司
idcompany_namelogocustomer_id
我的关系:
CustomerType.php
class CustomerType extends Model
{
public function customers()
{
return $this->hasMany('App\Customer');
}
}
Customer.php
class Customer extends Model
{
public function customer_type()
{
return $this->belongsTo('App\CustomerType');
}
public function more()
{
$related = ($this->customer_type_id == '1') ?
'App\CustomerIndividual' : 'App\CustomerCompany';
// 1 => individual
return $this->hasOne($related, 'customer_id');
}
}
CustomerIndividual.php
class CustomerIndividual extends Model
{
public function customer()
{
return $this->belongsTo('App\Customer');
}
}
CustomerCompany.php
class CustomerCompany extends Model
{
public function customer()
{
return $this->belongsTo('App\Customer');
}
}
我希望输出如下:
[
{
"id": 1,
"customer_type_id": 1,
"address": "New York",
"more": {
"id": 1,
"customer_id": 1,
"first_name": "John",
"last_name": "doe"
}
},
{
"id": 2,
"customer_type_id": 2,
"address": "london",
"more": {
"id": 2,
"customer_id": 2,
"name": "ANA IT Company",
"logo": "analogo.png"
}
}
]
这些是我的尝试:
return Customer::with(['person', 'company'])->get();
$customers = Customer::query();
$customers->when($customers->customer_type_id === 1, function($q){
return $q->with('person');
});
$customers->when($customers->customer_type_id === 2, function($q){
return $q->with('company');
});
$c = $customers->get();
return $c;
希望能在这里找到解决办法。
【问题讨论】:
标签: laravel relationship one-to-one