我想創建一個博客,我有兩個模型,Post和Tag。我想用透視表連接他們兩個。這是一種多對多的關係,我無法弄清楚如何將帖子和標籤鏈接在一起。當我嘗試這樣做時,它不會在我的數據庫上返回任何內容。帖子有標題和內容,而標籤只有名稱。 我讀過了,我必須使用同步方法或attach-detach,但我不知道該在哪裏做。它是在帖子路線或標籤路線?我已經通過利用包括職位和將它們分組在routes.php文件標籤的路線:2個模型與數據透視表,多對多的關係
Route::resource('/tags', 'TagController');
Route::resource('/posts', 'PostController');
這是我到目前爲止有:
我的Post模型:
class Post extends Model{
protected $fillable = [
'title', 'content'
];
protected $hidden = [
'view_count'
];
public function tags()
{
return $this->belongsToMany('App\Tag', 'post_tag');
}}
這裏是我的標籤型號:
class Tag extends Model{
protected $fillable = [
'name'
];
public function posts(){
return $this->belongsToMany('App\Post', 'post_tag');
}}
這裏是我的post_tag透視表:
class CreatePostTagTable extends Migration{
public function up()
{
Schema::create('post_tag', function (Blueprint $table) {
$table->increments('id');
$table->integer('post_id')->unsigned()->nullable()->index();
$table->foreign('post_id')->references('id')->on('posts');
$table->integer('tag_id')->unsigned()->nullable()->index();
$table->foreign('tag_id')->references('id')->on('tags');
$table->timestamps();
});
}
public function down()
{
Schema::dropIfExists('post_tag');
}}
代碼看起來不錯。你在嘗試什麼不起作用? –
當我想創建一篇文章時,我希望唯一的用戶,即管理員,將他想要的任何標籤與他的帖子關聯起來。我應該使用sync方法創建什麼路徑來將帖子與標籤連接起來,因爲到目前爲止,我的帖子和我的標籤都是在創建時存儲的,但是沒有任何信息存儲在post_tag表中 – livia
@joel hinz我現在意識到我的crud看起來不錯,但我有一個與你無關的問題。我可以編輯洞問題以問我如何在帖子的創建視圖中實現標籤複選框? – livia