【问题标题】:Laravel One To One relation return BelongsTo and not the childLaravel 一对一关系返回 BelongsTo 而不是孩子
【发布时间】:2020-09-08 13:01:32
【问题描述】:

我有 2 张桌子:

用户

id, name, email, password, parrainage_id, parrain_id

Parrainages

id, parrain_id, filleul_id, referral_token

这是一个从属系统,所以 parrain_id 和 filleul_id 相当于 user_id。

** 用户类 **

class User extends Authenticatable
{

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

public function parrain()
{
return $this->hasOne('\App\User');
}

** 辅助训练班**

class Parrainage extends Model
{

public function parrain()
{
return $this->hasOne('\App\User');
}

public function filleul()
{
return $this->hasOne('\App\User');
}

在模板中我尝试做

{{dd(Auth::user()->parrainage())}}

我的用户设置了 parrainage_id 值。我想获得 Parrainage 对象,但我获得了 Illuminate\Database\Eloquent\Relations\BelongsTo 对象。

我在人际关系中做错了吗?

谢谢

【问题讨论】:

  • 去掉parrainage()之后的(),只留下Auth::user()->parrainage来获取模型实例而不是belongsTo实例。
  • 非常感谢@porloscerros。其实这很容易。我专注于关系问题,这就是称呼它的方式。哈哈。我爱代码

标签: laravel eloquent laravel-blade


【解决方案1】:

调用关系函数(->parrainage())将返回关系查询。您要么需要手动执行查询,要么调用关系属性 (->parrainage) 以自动执行查询。

 {{ dd(Auth::user()->parrainage()->first()) }}

 {{ dd(Auth::user()->parrainage) }}

此外,虽然与您的问题无关,但您在 Parrainage 上的关系不正确。因为 parrainages 表包含外键(parrain_idfilleul_id),所以 Parrainage 类位于关系的 belongsTo 一侧。

【讨论】:

  • 非常感谢@patricus。其实这很容易。我专注于关系问题,这就是称呼它的方式。哈哈。我爱代码
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-31
  • 2020-12-11
  • 1970-01-01
  • 2014-12-11
  • 2014-11-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多