Laravel 的 with 方法返回 null
Posted
技术标签:
【中文标题】Laravel 的 with 方法返回 null【英文标题】:Laravel's with method returns null 【发布时间】:2019-07-29 15:33:56 【问题描述】:laravel Eloquent with() 方法,$this->model::find($no)->holder 可以看到结果,但是with方法总是null
public function holder()
return $this->belongsTo('App\Entities\Holder', 'holder_no', 'no');
public function bankAccount()
return $this->hasMany('App\Entities\BankAccount', 'holder_no', 'no');
public function getBankCardDetail(array $params): array
$card_detail = $this->model::with('holder:no,name')
->select([
'holder_no'
])
->where([
'no'=>$params['no']
])
->first()
->toArray();
return $card_detail;
"data":
"holder_no": "XXXXXXXXXX",
"holder": null
select `holder_no` from `bank_accounts` where (`no` = 'CGRWVF93HAOYHXZSCR4KVZ') limit 1
select `no`, `name` from `holders` where `holders`.`no` in (0)
我不知道问题出在哪里。拉拉维尔 5.8
【问题讨论】:
getBankCardDetail()
是模型上的方法吗?
什么是$this->model
?
您是否尝试在字段列表中添加主键字段?请添加id
字段,看看是否能解决问题。
getBankCardDetail() 是模型上的方法,$this->model 与 App\model 功能相同。
【参考方案1】:
no 和 name 应包含在 select 中,无论哪种方式都行不通。
【讨论】:
问题解决了,在模型中添加"$keyType = 'string'",laravel的ORM默认keyType是int,我的是string。以上是关于Laravel 的 with 方法返回 null的主要内容,如果未能解决你的问题,请参考以下文章
Laravel Eloquent with()-> 返回 null