Laravel 5.7 笔记三

    xiaoxiao2022-07-14  143

    分页: User::paginate(10);   (对应的blade : <div class="mt-3">{!! $users->render() !!}</div>) 

     

    测试数据填充:

          php artisan make:factory XXXXFactory   然后写完返回数据结构

                  注意 factory->define(Models ::class,  ........) {   把 Models  替换对应的模型名称, 否则会报错 InvalidArgumentException  : Unable to locate factory with name

          2.    php artisan make:seeder XXXXTableSeeder  然后写完run()方法

          3.   database/seeds/DatabaseSeeder.php  指定调用微博数据填充文件 

                $this->call(XXXXTableSeeder::class);

           4.   php artisan migrate:refresh --seed    对数据库进行重置和填充

                 // 单独指定XXXXTableSeeder数据填充 : php artisan db:seed --class=XXXXTableSeeder

     

     

    导向至上一次发出请求的页面 : return redirect()->back();

     

    Eloquent 模型 让关联的管理和处理变得更加简单,同时也支持以下几种类型的关联:

      一对一一对多多对多远层一对多多态关联多态多对多关联

    「一对多」模型对应关系: 

            // 在微博模型中, 指明一条微博属于一个用户   

    class Status extends Model { public function user() { return $this->belongsTo(User::class); } }

          //在用户模型中,指明一个用户拥有多条微博

    class User extends Authenticatable { . . . public function statuses() { return $this->hasMany(Status::class); } public function feed() { return $this->statuses()->orderBy('created_at', 'desc'); } }

     取出一个用户的所有微博并且分页:  $user->statuses()->orderBy('created_at', 'desc')->paginate(10);

     或者在用户模型中定义feed方法,来获取用户的所有微博(参照上列代码)

      

    添加微博:Auth::user()->statuses()->create(['content' => $request['content']]);   //微博模型中定义 fillable 属性 protected $fillable = ['content'];  否则报错  Add [content] to fillable property to allow mass assignment on

     

    「多对多关系」模型对应关系:

          在 Laravel 中我们使用 belongsToMany  来关联模型之间的多对多关系

           

    class User extends Authenticatable{ .... // belongsToMany  方法的第三个参数  user_id  是定义在关联中的模型外键名,而第四个参数  follower_id  则是要合并的模型外键名 //一个用户能够拥有多个粉丝 public function followers(){ return $this->belongsToMany(User::class, 'followers', 'user_id', 'follower_id'); } //一个用户能够关注多少人 public function followings(){ return $this->belongsToMany(User::class, 'followers', 'follower_id', 'user_id'); } //添加关注 public function follow($user_ids){ if(!is_array($user_ids)){ $user_ids = compact($user_ids); } return $this->followings()->sync($user_ids, false); } //取消关注 public function unfollow($user_ids){ if(!is_array($user_ids)){ $user_ids = compact($user_ids); } return $this->followings()->detach($user_ids); } //是否关注 public function isFollowing($user_id){ return $this->followings->contains($user_id); } }

          

     

     

     

     

     

    最新回复(0)