Eloquent集合

集合比数组更强大的地方是其使用了各种 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'];

    }