【发布时间】:2020-01-16 10:39:43
【问题描述】:
我正在用 Laravel 5.2 创建一个包含帖子的博客。每个帖子都会有多个标签。我创建了帖子和标签之间的关系。创建帖子后,我尝试为其附加多个标签。
控制器功能
public function store(Request $request)
{
$attributes = [
'author_id' => Auth::user()->id,
'title' => $request->input('title'),
'text' => $request->input('text'),
];
$post = Post::create($attributes);
// Get the tag ids from the the tags table in the database
$tagsList = $request->input('tags');
$tags = explode(",", $tagsList);
$tagIds = array();
foreach($tags as $tag) {
$tagIds[] = Tag::select('id')->where('name', $tag)->limit('5')->get();
}
dd($tagIds); // Output below
$post->tags()->attach($tagIds); // not working
}
dd($tagIds) 输出
array:2 [▼
0 => Collection {#316 ▼
#items: array:1 [▼
0 => Tag {#317 ▼
#fillable: array:2 [▶]
#connection: null
#table: null
#primaryKey: "id"
#keyType: "int"
#perPage: 15
+incrementing: true
+timestamps: true
#attributes: array:1 [▼
"id" => 32
]
#original: array:1 [▶]
#relations: []
#hidden: []
#visible: []
#appends: []
#guarded: array:1 [▶]
#dates: []
#dateFormat: null
#casts: []
#touches: []
#observables: []
#with: []
#morphClass: null
+exists: true
+wasRecentlyCreated: false
}
]
}
1 => Collection {#318 ▼
#items: array:1 [▼
0 => Tag {#319 ▼
#fillable: array:2 [▶]
#connection: null
#table: null
#primaryKey: "id"
#keyType: "int"
#perPage: 15
+incrementing: true
+timestamps: true
#attributes: array:1 [▼
"id" => 36
]
#original: array:1 [▶]
#relations: []
#hidden: []
#visible: []
#appends: []
#guarded: array:1 [▶]
#dates: []
#dateFormat: null
#casts: []
#touches: []
#observables: []
#with: []
#morphClass: null
+exists: true
+wasRecentlyCreated: false
}
]
}
]
返回的数组包含正确的标签 ID。我只是不知道如何将它们转换成一种格式,以便可以将它们传递给附加方法。
我会非常感谢任何形式的帮助!
【问题讨论】:
-
Post和Tag Model有什么关系。
-
@ascsoftw 这是多对多的关系。
标签: php arrays laravel laravel-5 eloquent