尝试通过数据透视表i Laravel连接类别和用户

时间:2017-02-02 17:29:03

标签: php mysql laravel-5.3

我在数据库中有用户和类别表以及数据透视表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');
      }

    }

0 个答案:

没有答案