laravel - 我想返回一个用户,其中列出了他们通过该用户名推荐的所有人员的列表
问题描述
我正在我的软件中开发推荐系统。我已经获得了推荐权,但我想列出 auth 用户推荐的所有用户。
注意:我正在编写一个 API 端点,所以我不能使用关系来显示他们的名字。这是我的用户模型
public function referrals()
{
return $this->hasMany(Referral::class, 'user_id', 'id');
}
public function referrer()
{
return $this->hasOne(Referral::class, 'referred_by', 'id');
}
注意:referred_by 是推荐人,user_id 是被推荐人
这是我的推荐模型
protected $fillable = ['user_id', 'referred_by', 'status'];
public function user()
{
return $this->belongsTo(User::class);
}
这是我的推荐迁移
Schema::create('referrals', function (Blueprint $table) {
$table->id();
$table->integer('user_id')->unsigned()->references('id')->on('users');
$table->integer('referred_by')->unsigned()->references('id')->on('users');
$table->string('status')->nullable();
$table->timestamps();
});
解决方案
用户模型
// Referrals given by the user.
public function referralsGiven()
{
return $this->hasMany(App\Referral::class, 'referred_by', 'id');
}
推荐模型
//Person who got the referral
public function user()
{
return $this->belongsTo(App\User::class, 'user_id', 'id');
}
public function referredBy()
{
return $this->belongsTo(App\User::class, 'referred_by', 'id');
}
pluck 采集方法https://laravel.com/docs/7.x/collections#method-pluck
控制器
$user = User::with('referralsGiven.user')->find(Auth::user()->id);
$users_reffered_by_Auth_user = $user->referralsGiven->pluck('user');
或者
$referrals = Referral::with('user')->where('reffered_by', Auth::user()->id)->get();
$users_reffered_by_Auth_user = $referrals->pluck('user');
推荐阅读
- excel - 根据名称(文本)计算哪个分数更高(值)
- javascript - 将文本上的句子转换为链接
- sql - 插入期间对整数进行 MS SQL 舍入 | VBA
- javascript - 处理来自 JSON 的 POST 数组对象,避免错误 ECONNREFUSED 套接字挂起
- vb.net - 如何在记事本文件中编辑文本框?
- html - 视频 z-index 变换旋转异常行为
- compilation - 如何编译带有额外代码洞穴的 C/C++ 程序?
- syntax - (让(下一个(f猜测))vs(让((下一个(f猜测)))
- javascript - iFrame onclick 按钮在新选项卡中打开并显示结果
- ios - 如何检查是否在 iOS 13 中打开了 Prefer Cross-Fade Transitions?