首頁  >  文章  >  php框架  >  關於Laravel ORM操作的詳解

關於Laravel ORM操作的詳解

藏色散人
藏色散人轉載
2021-04-20 09:42:243254瀏覽

以下由laravel教學專欄給大家介紹詳解Laravel ORM操作,希望對需要的朋友有幫助!

1、laravel取得最後一條sql語句和傳入的值:

    public function getOrderDetail($orderId){

        \DB::connection()->enableQueryLog(); // 开启查询日志  

        $ordeList = OrderItem::where('order_id',$orderId)
            ->get()->toArray();        $queries = \DB::getQueryLog(); // 获取查询日志  

        echo "<pre class="brush:php;toolbar:false">";
            print_r($queries);            echo PHP_EOL;
            print_r($ordeList);        echo "
";

直接上圖:

關於Laravel ORM操作的詳解

取出部分資料:

    public function getOrderDetail($uid,$orderId){
        $user = $this->check_user($uid);        $columns = [&#39;id&#39;, &#39;order_id&#39;, &#39;item_id&#39;, &#39;item_name&#39;, &#39;item_price&#39;, &#39;original_price&#39;, &#39;buy_num&#39;, &#39;real_num&#39;, &#39;cancel_num&#39;, &#39;status&#39;, &#39;create_time&#39;];        $ordeList = OrderItem::where(&#39;order_id&#39;,$orderId)
            -> orderBy(&#39;create_time&#39;,&#39;desc&#39;)
            ->get($columns)->toArray();        echo "<pre class="brush:php;toolbar:false">";
            print_r($ordeList);        echo "
";        exit;     }

關於Laravel ORM操作的詳解

#不存在就創建,存在就更新:

Model::updateOrCreate(
   [&#39;primary_key&#39; => 8],
   [&#39;field&#39; => &#39;value&#39;, &#39;another_field&#39; => &#39;another value&#39;]
);

Laravel子查詢,多條件判斷:

    public function getCourseProgress($uid,$levelId=0,$lessonId=0,$type=0,$page=0)
    {
        //检测用户合法性
        $user = $this->check_user($uid);        //当前页数
        $page = $page>0?$page:0;        //每页显示数量
        $perPage = config(&#39;bcc.per_page&#39;);        //显示字段
        $columns = [&#39;*&#39;];        #课程学习进度信息
        $result = LessonProgress::where(&#39;customer_id&#39;,$uid)
            ->where(function($query) use ($type){
                if($type) $query->where(&#39;source_type&#39;,$type);
            })
            ->where(function($query) use ($levelId,$lessonId){
                if($levelId && $lessonId) {                    $query->where([&#39;level_id&#39;=>$levelId,&#39;lesson_id&#39;=>$lessonId]);
                }elseif($levelId){                    $query->where(&#39;level_id&#39;, $levelId);
                }
            })->get();            //->paginate($perPage,$columns,$pageName=&#39;&#39;,$page);

        if($result->isEmpty()) return $this->responseSuccess([],&#39;No relevant information&#39;,20000);        return $this->responseCollection($result,new CourseProgressTransformer);
    }

Laravel運行複雜的原生語句:

    // 声母韵母分两类
    $data=Pronounce::selectRaw(&#39;group_concat(`letter`) as letters&#39;)
    ->groupBy(&#39;pronounce_type&#39;)
    ->get()
    ->toArray();

selectRaw裡面可以直接寫sql子句

以上是關於Laravel ORM操作的詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除