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

Laravel with() 急切加载返回空数据

为啥我的资源不返回所有具有“with”方法的元数据?

Laravel 5.3 使用 with() 方法预先加载关系

laravel with() 方法与 load() 方法

Laravel 关系 whereRaw 约束内部 with() 方法