提问者:小点点

雄辩的即时加载不会返回相关的模型数据


在我的Laravel项目中,我有两个雄辩的模型SetCard,它们之间有一对多的关系<代码>集合有许多卡片卡片属于集合

我试图拉数据使用雄辩急切加载使用与()函数。但是由于某种原因,集合中的卡片数组返回为空白。

设置php

<?php

namespace App;
use App\Card;

use Illuminate\Database\Eloquent\Model;

class Set extends Model
{
    protected $table = "sets";

    public function cards() {
        return $this->hasMany('App\Card');
    }
}

卡片php

<?php

namespace App;

use App\Set;
use Illuminate\Database\Eloquent\Model;

class Card extends Model
{
    protected $table = "cards";

    public function sets() {
        return $this->belongsTo('App\Set');
    }
}

控制器代码

$sets = Set::with([
         'cards' => function($query){
         $query->select('name', 'description');
         },
       ])->get();

  return $sets;

namedescription是我在Cards表中的字段,主键和外键除外。

它返回与卡片": []在我的JSON数组的集合

我试过在控制器中使用以下代码,

$sets = Set::with('cards.*')->get();

return $sets;

不起作用。

尝试在我的set模型中的hasMany方法中添加外键(卡片表中的set\u id),该方法创建了与卡片的关系。但是没有结果。

需要指出的是,当我尝试从表中分别从卡控制器中提取数据时,它返回了所有数据。

一些线索将意味着巨大的帮助。谢谢你抽出时间。


共2个答案

匿名用户

在控制器中尝试此代码,

$sets = Set::with('cards')->get();

return $sets;

让我知道它是否有效

匿名用户

试着这样做:

 public function sets() {
    return $this->belongsTo('App\Set','id','id_set');
}

第二个参数"id"是table Set的id,第三个参数"id_set"是Card Table中的Foreing键。