我试图在一个名为moderators
的数据透视表中将用户分配为论坛类别(subreddits)的版主
这些是表格
版主:id, user_id, subreddit_id, created_at, updated_at
users: id: name: email…
subreddit: id, user_id, name…
我已经创建了视图,控制器和模型,但数据不会提交给数据库,我没有得到错误。
注意:我需要访问这条路由subreddit/{id}/moderators/create
,以便进入视图并开始提交。
EDIT:我只是清空了store()
函数,并将其替换为return 'done';
,但这似乎没有生效。在单击提交按钮时,页面只是重新加载,什么也没有发生。也许问题出在视图上?
Routes.php
Route::resource('subreddit', 'SubredditController');
Route::resource('subreddit.moderators', 'ModeratorsController');
RouteServiceProvider
$router->model('articles', 'App'Article');
$router->model('subreddit', 'App'Subreddit');
$router->model('posts', 'App'Post');
$router->model('moderators', 'App'Moderator');
Moderator
模型
protected $table = 'moderators';
protected $fillable = ['user_id', 'subreddit_id'];
public function subreddit() {
return $this->belongsTo('App'Subreddit');
}
public function user() {
return $this->belongsTo('App'User');
}
ModeratorsController
-在这里我试图提交user_id和subreddit_it手动只是为了测试它是工作的。
public function create(Moderator $moderator, Subreddit $subreddit, User $user)
{
$subreddit = Subreddit::with('user')->findOrFail($subreddit->id);
return view('user/moderators')->with(compact('subreddit'));
}
public function store(Requests'ModeratorRequest $request, Subreddit $subreddit)
{
$moderator = new Moderator;
$moderator->user_id = 2;
$moderator->subreddit_id = 17;
$moderator->save();
}
这是视图内的表单,我用的是typeahead。js这就是为什么有div和id="remote"
{!! Form::open(['url' => 'subreddit/' . $subreddit->id . '/moderators', 'method' => 'POST']) !!}
<p>
<div id="remote">
<input class="form-control typeahead" type="text" placeholder="Choose a Username" name="user_name">
<input type="hidden" class="user_id" value="" name="user_id">
</div>
</p>
<p>
{!! Form::submit('Submit Post', ['id' => 'submit', 'class' => 'btn btn-primary']) !!}
</p>
{!! Form::close() !!}
ModeratorRequest
public function authorize()
{
return true;
}
public function rules()
{
return [
'user_id' => 'required',
'subreddit_id' => 'required'
];
}
根据文档尝试foreach ($messages->all() as $message)
。
问题是您的ModeratorRequest
返回验证错误,您没有在视图上显示。