Laravel 5.7 笔记三

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

 

测试数据填充:

  1.       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);
    }

}

      

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值