gpt4 book ai didi

php - 将版主添加到论坛类别时没有模型 [App\Subreddit] 的查询结果

转载 作者:行者123 更新时间:2023-11-29 02:53:41 26 4
gpt4 key购买 nike

我正在尝试将用户指定为论坛类别的版主。目前,我只是试图显示用户可以添加版主 subreddit/{id}/moderators 的路线并显示 subreddit 名称。

为此,我得到No query results for model [App\Subreddit]

我一定是在某处弄乱了表之间的关系。

我的 table

#users: id, name, email...
#subreddits: id, name, user_id...
#moderators: id, user_id, subreddit_id

路由.php

Route::get('subreddit/{id}/moderators', [
'as' => 'moderators',
'uses' => 'ModeratorsController@create'
]);

Moderator.php 模型

class Moderator extends Model
{
protected $table = 'moderators';

protected $fillable = ['user_id', 'subreddit_id'];

public function subreddit() {
return $this->belongsToMany('App\Subreddit');
}

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

User 模型中,我有一个 hasManyThrough

public function moderators() {
return $this->hasManyThrough('App\Moderator', 'App\Subreddit');
}

Subreddit 模型中

public function moderators() {
return $this->hasMany('App\Moderator');
}

然后在 ModeratorsController 中,我有以下 create() 方法

public function create(Moderator $moderator, Subreddit $subreddit, User $user)
{
$subreddit = Subreddit::with('user')->findOrFail($subreddit->id);

return view('user/moderators')->with('subreddit', $subreddit)->with('user', $user)->with('moderator', $moderator);
}

如果我将 findOrFail 更改为 firstOrFail 它将为我提供数据库中的第一个 subreddit,但我不想要第一个,我想要我想要的那个我正在尝试添加版主。

最佳答案

class User extends Model{
public function canModerate(){ //name this as you wish
return $this->belongsToMany('App\Subreddit','moderators');
}
public function subreddits(){
return $this->hasMany('App\Subreddit');
}
}

class Subreddit extends Model{
public function moderators(){ // name this as you wish
return $this->belongsToMany('App\User','moderators');
}

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

moderators 表中删除 id,您将不再需要 Moderator 类。可以找到其他文档 here .

编辑 RouteServiceProvider::boot 方法并添加以下行:

$router->model('subreddit', 'App\Subreddit');

可以找到文档here .

你的路线应该是这样的:

Route::resource('subreddit.moderator','ModeratorsController');

URL 应该类似于 http://localhost/subreddit/{subreddit}/moderator/create

最后 Controller 方法应该是:

public function create(Subreddit $subreddit)
{
$user = $subreddit->creator;
$moderators = $subreddit->moderators()->get();
return view('user/moderators')->with(compact('subreddit','user','moderators'));
}

关于php - 将版主添加到论坛类别时没有模型 [App\Subreddit] 的查询结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32958986/

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