集合比数组更强大的地方是其使用了各种 map /reduce 的直观操作
$users = UserInfo::select("id","name as username")->get(); $names = $users->reject(function ($user) { return $user->username === 'admin'; })->map(function ($user) { return $user->id; }); return $names;
时间戳
默认情况下,Eloquent 会预计你的数据表中有 created_at 和 updated_at 字段。如果你不希望让 Eloquent 来自动维护这两个字段,可在模型内将 $timestamps 属性设置为 false
public $timestamps = false;
数据库连接
默认情况下,所有的 Eloquent 模型会使用应用程序中默认的数据库连接设置。如果你想为模型指定不同的连接,可以使用 $connection 属性:
/** * 此模型的连接名称。 * * @var string */ protected $connection = 'connection-name';
一对一
一对一是最基本的关联关系
public function groupInfo() { return $this->hasOne('App\Model\UserGroup', 'id','group_id'); }
hasOne 方法的第一个参数是关联模型的类名。一旦定义了模型关联,我们就可以使用 Eloquent 动态属性获得相关的记录
$grp = UserInfo::find(1000007)->groupInfo->toArray();
字段白名单
我们可以设置希望接收的字段名称
/** * The attributes that are mass assignable. * @var array */ protected $fillable = [ 'name', 'status', 'id', 'sort', 'company_id', 'editor_id', 'editor_name' ];
隐藏字段
我们可以设置某些字段对前端不可见
/** * The attributes that should be hidden for arrays. * @var array */ protected $hidden = [ ];
默认值
我们可以设置字段的默认值
/** * 模型的默认属性值。 * @var array */ protected $attributes = [ 'sort' => 0, ];
触发器
我们可以设置对某个字段进行赋值,触发执行的其他代码逻辑
/** * 触发器:setNameAttribute * @param $value * @return mixed * @Author liulibo * @Date 2019-08-27 */ public function setNameAttribute($value) { $info = \Helper::get_pinyin_for_insert(['name'=>$value]); $this->attributes['spell'] = $info['spell']; $this->attributes['first_letter'] = $info['first_letter']; return $this->attributes['name'] = $info['name']; }