【发布时间】:2016-06-30 20:03:34
【问题描述】:
我有以下结构:
3 个表格:电影、演员、流派
电影表架构:
Schema::create('movies', function (Blueprint $t) {
$t->increments('id');
$t->string('title');
$t->integer('genre_id')->unsigned();
$t->foreign('genre_id')->references('id')->on('genres');
$t->string('genre');
$t->timestamps();
});
流派表架构:
Schema::create('genres', function (Blueprint $t) {
$t->increments('id');
$t->string('name');
$t->timestamps();
});
演员表架构:
Schema::create('actors', function (Blueprint $t) {
$t->increments('id');
$t->string('name');
$t->timestamps();
});
电影模式:
public function genre()
{
return $this->belongsTo('App\Genre');
}
public function actor()
{
return $this->belongsToMany('App\Actor');
}
类型模式:
public function movie()
{
return $this->hasMany('App\Movie');
}
演员模式:
public function movie()
{
return $this->belongsToMany('App\Movie');
}
表格:
<form method="post" action="{{ route('movies.insert') }}">
<input type="text" name="movieName" id="movieName">
<input type="text" name="actorName" id="actorName">
<input type="text" name="genre" id="genre">
<button type="submit">Add</button>
</form>
我正在使用以下控制器方法从表单中发布数据,一切正常,但是当我提交 2 部具有相同流派的电影时,例如“动作/戏剧”,我在流派表中获得 2 个单独的条目,例如:
id: 1 名称:动作/戏剧
id:2 名称:动作/戏剧
对特定流派类型反复使用单个 id 的最佳方法是什么?例如,如果我添加了 10 部流派类型为“动作/戏剧”的电影,那么“电影”表中的“流派 ID”外键应该只显示一个与流派表的“动作/戏剧”ID 对应的特定 ID。希望这是有道理的:/
控制器方法:
public function addMovies(Request $request)
{
$genre = new Genre;
$genre->name = $request->input('genre');
$genre->save();
$movie = new Movie;
$movie->title = $request->input('movieName');
$movie->genre = $request->input('genre');
$movie->genre()->associate($genre);
$movie->save();
$actor = new Actor;
$actor->name = $request->input('actorName');
$actor->save();
$actor->movie()->save($movie);
return redirect()->route('movies.search');
}
输出表应如下所示:
注意:我还有一个数据透视表,它将电影与演员联系起来,以促进多对多关系,但我没有在这里包含它。
【问题讨论】:
标签: php mysql database laravel eloquent