分页: 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);
}
}