模型
public function categories()
{
return $this->belongsToMany('App\Category', 'post_categories');
}
public function posts()
{
return $this->belongsToMany('App\Post', 'post_categories');
}
控制器
public $DEFAULT_LANGUAGE = 1;
public function store(Request $request)
{
$titles = $request->PostTitle;
$post = new Post();
$post->PostTitle = $titles[$this->DEFAULT_LANGUAGE];
$post->save();
$post->categories()->attach($request->categoryID[$this->DEFAULT_LANGUAGE]);
unset($titles[$this->DEFAULT_LANGUAGE]);
foreach ($titles as $key => $title) {
$post = new Post();
$post->PostTitle = $request->PostTitle[$key];
$post->save();
$post->categories()->attach($request->categoryID[$key]);
}
return response()->json($post);
查看
<select class="form-control category-list" name="categoryID[]" multiple="multiple" data-placeholder="Pilih Kategori">
@foreach($categories as $category)
<option value="{{ $category->id }}">
{{ $category->CategoryName }}
</option>
@endforeach
</select>
如果我有两个类别并且我想选择所有类别,为什么我只能获得最后一个类别?我也尝试使用foreach,但我得到了错误偏移。 任何的想法?
我有两个标签窗格.. 我在选项卡1中存储了两个categoryID,在选项卡2中存储了一个categoryID ..然后我单击提交按钮..标题响应在选项卡1中的两个categoryID,但在我的数据库中,我只获得了最后一条记录
当我进行控制时,它会显示两个CategoryID ..
答案 0 :(得分:1)
附加/分离
来自docs
Eloquent还提供了一些额外的辅助方法来使其工作 与相关型号更方便。例如,让我们想象一下用户 可以有很多角色,角色可以有很多用户。附加角色 通过在连接的中间表中插入记录来向用户提供 模型,使用attach方法:
您只传递一个附加值,因此只获取最后一条记录,以便获得传递所有categoryID所需的全部内容
public $DEFAULT_LANGUAGE = 1;
public function store(Request $request)
{
$titles = $request->PostTitle;
$post = new Post();
$post->PostTitle = $titles[$this->DEFAULT_LANGUAGE];
$post->save();
$post->categories()->attach($request->categoryID[$this->DEFAULT_LANGUAGE]);
unset($titles[$this->DEFAULT_LANGUAGE]);
$data= array();
foreach ($titles as $key => $title) {
$post = new Post();
$post->PostTitle = $request->PostTitle[$key];
$post->save();
$data[]= $post->categories()->attach($request->categoryID[$key]);
}
return response()->json($data);
`
答案 1 :(得分:1)
我找到了解决方案.. 我只需要更改视图
<select class="form-control category-list" name="categoryID[{{$language->id}}][]" multiple data-placeholder="Pilih Kategori">
@foreach($categories as $category)
<option value="{{$category->id}}">{{$category->CategoryName}}</option>
@endforeach
</select>
并更改控制器
$post->categories()->attach($request->categoryID[$this->DEFAULT_LANGUAGE]);
答案 2 :(得分:0)
你在使用这个模型的是什么,它的名字是什么? 通常它是这样做的: 应用\类别:
public function posts()
{
return $this->belongsToMany('App\Post', 'post_categories');
}
应用\发表:
public function categories()
{
return $this->belongsToMany('App\Category', 'post_categories');
}
这两个关系不在同一个文件中,而是在两个连接的单独模型中。
答案 3 :(得分:0)
试试这个兄弟。 我只是在控制器中更改你的代码。 我希望它可以帮到你:)
模型
public function categories()
{
return $this->BelongsToMany('App\Category', 'post_categories');
}
public function posts()
{
return $this->BelongsToMany('App\Post', 'post_categories');
}
控制器
$post = App\Post::findOrFail($id);
$post = $post->load('categories');
$attributes = $post->attributes->toArray();
查看
<select class="form-control category-list" name="categoryID[]" multiple="multiple" data-placeholder="Pilih Kategori">
@foreach($categories as $category)
<option value="{{ $category->id }}">
{{ $category->CategoryName }}
</option>
@endforeach
</select>
答案 4 :(得分:0)
在您看来,尝试更改多个=&#34;多个&#34;只是多个