我在数据库中有用户和类别表以及数据透视表categoriesie_users。在控制器中,我使每个用户都可以创建自己的类别,并检查是否存在某个类别,如果登录的用户具有该类别,则他无法创建具有相同名称的新类别,并且工作正常。接下来我想要的是'否则' - 如果类别存在且已登录用户没有该类别但他想创建它 - 在这种情况下,我想要连接已存在的类别和该用户。换句话说 - 我想,让我们说,类别'音乐'为所有未来用户提供该名称的一个类别。这是如此复杂,所以任何建议都会很感激。谢谢。 这是我的CategoriesController.php
public function store(Request $request)
{
$user = Sentinel::getUser();
$category = Categories::where('name', $request->name)->get();
foreach ($category as $cat){
$user = CategorieUser::where('categorie_id',$cat->id)->where('user_id', $user->id);
}
if($category->count() > 0){
if($user->count() > 0){
return redirect()->route('categories.index');
}
else{
/*THIS IS THAT 'else' FROM ABOVE QUESTION*/
}
}
else{
$categories = new Categories();
$categories->name = $request->name;
$categories->sections_id = $request->sections_id;
$categories->save();
$categories->users()->sync([$user->id]);
}
session()->flash('success', "New category '{$categories->name}' has been created.");
return redirect()->route('categories.index');
}
这是我的模型Categories.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Categories extends Model
{
protected $table = 'categories';
public function sections()
{
return $this->belongsTo('App\Models\Sections');
}
public function users()
{
return $this->belongsToMany('App\Models\Users', 'categorie_user','categorie_id','user_id');
}
}
这是型号Users.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Users extends Model
{
protected $table = 'users';
public function categories()
{
return $this->belongsToMany('App\Models\Categories', 'categorie_user','user_id','categorie_id');
}
}
这是枢轴模型CategorieUser.php(我必须创建,我可以通过foreach循环)
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class CategorieUser extends Model
{
protected $table = 'categorie_user';
public function categories(){
return $this->belongsTo('App\Models\Categories', 'categorie_id');
}
}