Laravel 自带的 EloquentORM 提供了一个美观、简单的与数据库打交道的 ActiveRecord 实现,每张数据表都对应一个与该表进行交互的“模型”,模型允许你在表中进行数据查询,以及插入、更新、删除等操作。
在开始之前,确保在config/database.php文件中配置好了数据库连接。
所有Eloquent模型都继承自 Illuminate\Database\Eloquent\Model类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
<?php /** * @author Yongtao Zhang <yyzm@vip.qq.com> * @package FbRule.php * @createtime 18-10-29 下午4:39 */ namespace App\Model\Facebook; use Illuminate\Database\Eloquent\Model; class FacebookRule extends Model { //关联到模型的数据表 protected $table = 'facebook_rule'; //表的主键名,如果表主键是id的则无需设置 protected $primaryKey = 'id'; //如果你不想自动管理列created_at和updated_at public $timestamps = false; //自定义时间戳格式 protected $dateFormat = 'U'; //为模型指定不同的数据库连接 protected $connection = 'connection-name'; //可以被批量赋值的属性 protected $fillable = [ 'id', 'uid', 'name', 'ad_account_id', 'budget_operator', 'budget', 'level', 'effect', 'action', 'site_id', 'site_type', 'trigger_time', 'rule_run_time', 'rule_max_time', 'rule_pass_num', 'rule_refuse_num', 'status' ]; /** * 规则具体内容 * @return \Illuminate\Database\Eloquent\Relations\HasMany */ public function ruleContent() { return $this->hasMany('App\Model\Facebook\FacebookRuleContent','rule_id','id'); } /** * 规则对应触发结果 * @return \Illuminate\Database\Eloquent\Relations\HasMany */ public function ruleTrigger() { return $this->hasMany('App\Model\Facebook\FacebookRuleTrigger','facebook_rule_id','id'); } } |
一、like模糊查询
1 2 3 4 5 6 |
$where = [ ['name','like','%'.$name.'%'], ['site_type',$site_type] ]; FacebookRule::with('ruleContent')->where('status',1)->where($where)->orderBy($field, 'desc')->groupBy('name','budget_operator','budget','level','action','site_type')->paginate(); |
二、where的and和or
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
/** * 返回指定adset_id的触发列表操作log * @param $adset_id * @return array */ public function getTriggerOperatorLog($ad_account_id) { $where = [ ['account_id', $ad_account_id], ['status', '>', 0] ]; return FacebookRuleTrigger::where($where)->where(function ($query){ $query->orWhere('edit_budget_result',1)->orWhere('stop_ad_result',1); })->select(['adset_id','adset_name','review_admin_id','review_time','budget_result_type','budget_result_value','daily_budget_new','edit_budget_result','stop_ad_result'])->orderBy('review_time','desc')->take(5)->get()->groupBy('adset_id')->toArray(); } |
三、一对多关联,判断关联关系是否存在用has
1 2 3 4 5 6 7 8 9 10 11 12 |
//涛哥项目代码使用示例 $where = [ ['account_status', 1], ['name','like','%'.$name.'%'], ['site_type', $site_type] ]; $vaildFaceookAdAccount = FacebookAdAccount::with(['hasRule'=>function($query){ $query->where('status',1)->select('id','ad_account_id'); }])->has('hasRule')->where($where)->select('id','name','account_id','sid','age','created_time')->paginate(); return $vaildFaceookAdAccount; |
转载请注明:PHP笔记 » Laravel中EloquentORM(连贯操作)使用总结