我正在尝试在laravel中创建一个简单的关注者/关注者系统,没什么特别的,只需单击一个按钮即可关注或取消关注,并显示关注者或关注您的人。
我的麻烦是我不知道如何在模型之间建立关系。
这些是迁移:
-用户迁移:
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->timestamps();
$table->string('email');
$table->string('first_name');
$table->string('last_name');
$table->string('password');
$table->string('gender');
$table->date('dob');
$table->rememberToken();
});
-后续迁移:
Schema::create('followers', function (Blueprint $table) {
$table->increments('id');
$table->integer('follower_id')->unsigned();
$table->integer('following_id')->unsigned();
$table->timestamps();
});
}
以下是模型:
-用户模型:
class User extends Model implements Authenticatable
{
use \Illuminate\Auth\Authenticatable;
public function posts()
{
return $this->hasMany('App\Post');
}
public function followers()
{
return $this->hasMany('App\Followers');
}
}
-追随者模型基本上是空的,这就是我陷入困境的地方
我尝试过这样的事情:
class Followers extends Model
{
public function user()
{
return $this->belongsTo('App\User');
}
}
但这没用。
另外,我想问一下您能否告诉我如何编写“关注”和“显示关注者/关注”功能。我已经阅读了所有可以找到但没有用的教程。我似乎听不懂。
最佳答案
您需要意识到“跟随者”也是App\User
。因此,您只需使用以下两种方法就可以使用一个模型App\User
:
// users that are followed by this user
public function following() {
return $this->belongsToMany(User::class, 'followers', 'follower_id', 'following_id');
}
// users that follow this user
public function followers() {
return $this->belongsToMany(User::class, 'followers', 'following_id', 'follower_id');
}
用户
$a
想要关注用户$b
:$a->following()->attach($b);
用户
$a
想要停止关注用户$b
:$a->following()->detach($b);
获取用户
$a
的所有关注者:$a_followers = $a->followers()->get();
关于php - Laravel追随者/以下关系,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44913409/