Laravel 8有许多未返回的数据

Laravel 8有许多未返回的数据,laravel,pivot,has-many-through,has-many,Laravel,Pivot,Has Many Through,Has Many,我有三张桌子,都是有说服力的模型。我试图使用hasManyThrough或pivot之类的方法来获取从原始表到最后一个表的关系。我有一个hasManyThrough设置现在,但我没有得到任何结果。从dd()生成的查询看起来是正确的,但我没有看到任何数据。没有抛出任何错误 表和ID: users: id apps: id user_id app_id appversions: id app_id user_id 一个用户可以有许多应用程序。一个应用程序可以有多个版本。我想从他们拥有的所有应用

我有三张桌子,都是有说服力的模型。我试图使用hasManyThrough或pivot之类的方法来获取从原始表到最后一个表的关系。我有一个hasManyThrough设置现在,但我没有得到任何结果。从dd()生成的查询看起来是正确的,但我没有看到任何数据。没有抛出任何错误

表和ID:

users:
id

apps:
id
user_id
app_id

appversions:
id
app_id
user_id
一个用户可以有许多应用程序。一个应用程序可以有多个版本。我想从他们拥有的所有应用程序中获取特定用户的所有版本。唯一的区别是版本表称为“appversions”,模型称为版本

我正在版本模型上设置表名

class Version extends Model
{
    use HasFactory;

    protected $table = 'appversions';
}
在我的用户模型上,我正在尝试这个hasManyThrough

public function versions()
    {
        return $this->hasManyThrough(
            'App\Models\Version', 
            'App\Models\App',
            'user_id',
            'app_id',
            'id',
            'app_id'
        );

    }
然后从我的控制器调用它,就像这样:

$userVersions = $user->version();

我明白了,现在就看到了

我改变了这一点:

$userVersions = $user->version();
为此:

$userVersions = $user->version;

为什么
apps
表有
app\u id
列?很遗憾,我没有管理db表。应用程序id是为应用程序创建的单独id。类似“aa111”的东西。版本中的app_id引用该值,而不是主递增键。这就是我用hasManyThrough指定新键的原因。