我有三张桌子,都是有说服力的模型。我试图使用hasManyThrough或pivot之类的方法来获取从原始表到最后一个表的关系。我有一个hasManyThrough设置现在,但我没有得到任何结果。从dd()生成的查询看起来是正确的,但我没有看到任何数据。没有抛出任何错误。
表格和id:
users:
id
apps:
id
user_id
app_id
appversions:
id
app_id
user_id
一个用户可以拥有许多应用程序。一个应用可以有多个版本。我想从他们拥有的所有应用程序中获取特定用户的所有版本。唯一的区别是版本表被称为“应用版本”,模型被称为版本。
我正在版本模型上设置表名。
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;