gpt4 book ai didi

php - Laravel 5.1 同一模型上的多个多对多关系

转载 作者:可可西里 更新时间:2023-10-31 23:18:06 24 4
gpt4 key购买 nike

我看到在 Laravel 的 ORM 中遇到了以下问题:

场景:所有用户都有一个监视列表,监视列表包含其他用户。

我似乎无法让这些关系正常工作,因为它们是周期性的,到目前为止我有以下几点:

class UserWatchlist extends Model
{
protected $table = 'UserWatchlist';

public function Owner() {

return $this->belongsTo('App\User');
}

public function WatchedUsers() {

return $this->hasMany('App\User');
}
}


Schema::create('UserWatchlist', function (Blueprint $table) {
$table->increments('id');
$table->integer('user_id')->unsigned();
$table->foreign('user_id')->references('id')->on('Users')->onDelete('cascade');

$table->integer('watched_id')->unsigned();
$table->foreign('watched_id')->references('id')->on('Users')->onDelete('cascade');
$table->timestamps();
});


class User extends Model
{


public function Watchlist() {

return $this->hasOne('App\UserWatchlist');
}

public function WatchedBy() {

return $this->belongsToMany('App\UserWatchlist');
}
}

它没有按照我预期的正确信息编队。我错过了一些基本的东西吗?

最佳答案

由于 UserWatchlist 是一个数据透视表,我想您面临的是多对多关系,关系的两个元素是同一模型 (User)

如果是这样,您不应该为数据透视表 UserWatchlist 建立模型,而您要做的就是通过数据透视表设置用户之间的关系:

class User extends Model
{
//get all the Users this user is watching
public function Watchlist()
{
return $this->belongsToMany('User', 'UserWatchlist', 'user_id', 'watched_id' );
}

//get all the Users this user is watched by
public function WatchedBy()
{
return $this->belongsToMany('User', 'UserWatchlist', 'watched_id', 'user_id' );
}
}

检查 here有关多对多关系的更多信息

关于php - Laravel 5.1 同一模型上的多个多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33803031/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com