laravel group byÓ÷¨
laravelÊÇÒ»¸öºÜÊÇÊ¢ÐеÄphp¿ò¼Ü£¬ÆÕ±éÓ¦ÓÃÓÚweb¿ª·¢¡£ÆäÖУ¬laravelÖеÄgroup byÓ÷¨ÊǷǾ³£Óõģ¬¿ÉÒÔÔÚÊý¾Ý¿âÖжÔÊý¾Ý¾ÙÐзÖ×飬Àû±ã¾ÙÐÐͳ¼ÆÆÊÎöºÍ¾ÛºÏ²Ù×÷¡£±¾ÎĽ«ÉîÈë̽ÌÖlaravelÖеÄgroup byÓ÷¨£¬×ÊÖú¶ÁÕ߸üºÃµØÃ÷È·ºÍÓ¦Óá£
Ò»¡¢Ê²Ã´ÊÇgroup by
ÔÚÊý¾Ý¿âÖУ¬group byÊÇÒ»ÖÖ¶ÔÊý¾Ý¾ÙÐзÖ×éµÄ²Ù×÷¡£Ëü½«¾ßÓÐÏàͬÊôÐÔÖµµÄÊý¾ÝÐйéΪͳһÖֱ𣬲¢ÔÚ´Ë»ù´¡ÉϾÙÐÐͳ¼ÆºÍ¾ÛºÏ²Ù×÷¡£ÔÚLaravelÖУ¬ÎÒÃÇ¿ÉÒÔʹÓÃgroup byÒªÁìÀ´ÊµÏִ˹¦Ð§¡£
ÔÚLaravelÖУ¬group byÒªÁìµÄÃûÌÃÈçÏ£º
$users = DB::table('users') ->groupBy('account_id') ->having('account_id', '>', 100) ->get();
µÇ¼ºó¸´ÖÆ
Õâ¸öÒªÁì½ÓÊÜÒ»¸ö²ÎÊý£¬¼´Òª·Ö×éµÄ×Ö¶ÎÃû¡£ÔÚÉÏÃæµÄÀý×ÓÖУ¬ÎÒÃǽ«Óû§±íƾ֤account_idÕâÒ»×ֶξÙÐзÖ×飬²¢É¸Ñ¡³öaccount_id´óÓÚ100µÄ¼Í¼¡£×îÖÕ£¬ÎÒÃÇ»ñµÃÁËÒ»¸öÓû§ÁÐ±í£¬ÆäÖÐÿ¸öÓû§¶¼±»·Ö×éµ½ÁËËüÃÇËùÊôµÄÕË»§ÖС£
¶þ¡¢ÔÚLaravelÖÐʹÓÃgroup byµÄ³¡¾°
ÔÚÏÖʵ¿ª·¢ÖУ¬LaravelÖеÄgroup byÓ÷¨ºÜÊÇÎÞа£¬¿ÉÒÔÓ¦ÓÃÓÚÖÖÖÖ³¡¾°¡£ÏÂÃæÊÇһЩ³£¼ûµÄʹÓó¡¾°£º
ͳ¼ÆÆÊÎö
LaravelÖеÄgroup byÓ÷¨¿ÉÒÔ×ÊÖúÎÒÃǾÙÐÐÖÖÖÖͳ¼ÆÆÊÎö£¬ºÃ±ÈÅÌËãƽ¾ùÖµ¡¢×î´óÖµ¡¢×îСֵ¡¢ÇóºÍµÈµÈ¡£ÔÚÕâÖÖÇéÐÎÏ£¬ÎÒÃÇͨ³£ÐèÒªÏȽ«Êý¾Ýƾ֤ij¸ö×ֶξÙÐзÖ×飬Ȼºó¶Ô¸÷¸ö×éÄÚµÄÊý¾Ý¾ÙÐоۺϲÙ×÷¡£
ºÃ±È£¬ÎÒÃÇ¿ÉÒÔͨ¹ýÒÔÏ´úÂëÀ´ÅÌËãÿ¸öÄê·ÝµÄÏúÊÛ×ܶ
$sales = DB::table('orders') ->select(DB::raw('YEAR(created_at) as year'), DB::raw('SUM(total) as sales')) ->groupBy('year') ->get();
µÇ¼ºó¸´ÖÆ
ÔÚÕâ¸öÀý×ÓÖУ¬ÎÒÃǽ«¶©µ¥±íƾ֤¶©µ¥½¨Éèʱ¼äµÄÄê·Ý¾ÙÐзÖ×飬²¢Ê¹ÓÃDB::rawÒªÁìÀ´¾ÙÐоۺϲÙ×÷¡£
Êý¾ÝÈ¥ÖØ
ÓÐʱ¼äÎÒÃÇÐèÒª¶ÔÊý¾Ý¾ÙÐÐÈ¥ÖØ£¬ÒÔ×èÖ¹Öظ´Í³¼ÆºÍÅÌËã¡£LaravelÖеÄgroup byÓ÷¨¿ÉÒÔºÜÀû±ãµØʵÏÖÈ¥ÖزÙ×÷¡£
ºÃ±È£¬ÎÒÃÇ¿ÉÒÔʹÓÃÒÔÏ´úÂëÀ´ÅÌÎÊûÓÐÖظ´µÄÓû§ÁÐ±í£º
$users = DB::table('users') ->groupBy('email') ->get();
µÇ¼ºó¸´ÖÆ
ÔÚÕâ¸öÀý×ÓÖУ¬ÎÒÃǽ«Óû§±íƾ֤email×ֶξÙÐзÖ×飬ÒÔÈ·±£Ã¿¸öÓÊÏäµØµãÖ»ÓÐÒ»¸öÓû§¡£
¶à±í¹ØÁª
µ±ÎÒÃÇÐèÒª¶Ô¶àÕűí¾ÙÐйØÁªÅÌÎÊʱ£¬group byÓ÷¨¿ÉÒÔ×ÊÖúÎÒÃǶÔЧ¹û¾ÙÐзÖ×飬ÒÔ±ã¾ÙÐкóÐøµÄͳ¼ÆºÍɸѡ²Ù×÷¡£
ºÃ±È£¬ÎÒÃÇ¿ÉÒÔʹÓÃÒÔÏ´úÂëÀ´ÅÌÎÊÿ¸öÆ·ÀàµÄ¿â´æ×ÜÁ¿£º
$categoryStocks = DB::table('products') ->join('categories', 'products.category_id', '=', 'categories.id') ->select('categories.name', DB::raw('SUM(products.stock) as total')) ->groupBy('categories.name') ->get();
µÇ¼ºó¸´ÖÆ
ÔÚÕâ¸öÀý×ÓÖУ¬ÎÒÃǽ«²úÆ·±íºÍÖÖ±ð±í¾ÙÐÐÁ˹ØÁª£¬²¢Æ¾Ö¤ÖÖÓÖÃû³Æ½«²úÆ·¿â´æ×ÜÁ¿¾ÙÐÐÁË·Ö×é¡£×îÖÕ£¬ÎÒÃÇ»ñµÃÁËÒ»¸öÖÖ±ð¿â´æ×ÜÁ¿µÄÁÐ±í¡£
Èý¡¢Ê¹ÓÃ×¢ÖØÊÂÏî
ËäÈ»LaravelÖеÄgroup byÓ÷¨ºÜÀû±ã£¬µ«ÎÒÃÇÔÚʹÓõÄʱ¼äÕÕ¾ÉÐèҪעÖØһЩÊÂÏÒÔÈ·±£³ÌÐòµÄ׼ȷÐÔºÍÐÔÄÜ¡£
ÔÚʹÓÃgroup byÒªÁì֮ǰ£¬ÎÒÃÇÓ¦¸Ã¾¡¿ÉÄܵØʹÓÃwhere»òhavingÒªÁì¾ÙÐÐɸѡ²Ù×÷£¬ÒÔïÔÌÐèÒª·Ö×éµÄÊý¾ÝÁ¿¡£
ºÃ±È£¬ÈôÊÇÎÒÃÇÐèÒªÅÌÎÊÏúÊÛ¶î´óÓÚ10000µÄÄê·ÝÁÐ±í£¬ÄÇôÎÒÃÇÓ¦¸ÃÏÈʹÓÃwhereÒªÁìɸѡµôСÓÚ10000µÄÊý¾Ý£¬È»ºóÔÙ¾ÙÐÐgroup by²Ù×÷£º
$sales = DB::table('orders') ->select(DB::raw('YEAR(created_at) as year'), DB::raw('SUM(total) as sales')) ->where('total', '>', 10000) ->groupBy('year') ->get();
µÇ¼ºó¸´ÖÆ
ÕâÑùÒ»À´£¬ÎÒÃÇ¿ÉÒÔïÔÌ´ý·Ö×éÊý¾ÝµÄÊýÄ¿£¬Ìá¸ßÅÌÎÊЧÂÊ¡£
ÔÚʹÓÃgroup byÒªÁìʱ£¬ÎÒÃÇÓ¦¸Ã¾¡¿ÉÄܵØʹÓþۺϺ¯Êý£¬ÒÔ×èÖ¹·ºÆðÊý¾Ý¹ýʧ¡£
ºÃ±È£¬ÈôÊÇÎÒÃÇÐèÒªÅÌÎÊÏúÊÛ¶î´óÓÚƽ¾ùÖµµÄÄê·ÝÁÐ±í£¬ÄÇôÎÒÃÇÐèҪʹÓÃAVGº¯ÊýÀ´ÅÌËãƽ¾ùÏúÊ۶
$sales = DB::table('orders') ->select(DB::raw('YEAR(created_at) as year'), DB::raw('AVG(total) as average')) ->groupBy('year') ->having('average', '>', 100) ->get();
µÇ¼ºó¸´ÖÆ
ÔÚÕâ¸öÀý×ÓÖУ¬ÎÒÃÇʹÓÃÁËAVGº¯ÊýÀ´ÅÌËãƽ¾ùÏúÊ۶ÈôÊÇÎÒÃÇÖ±½ÓʹÓÃSUMº¯Êý½«ÏúÊÛ¶î¾ÙÐÐÀÛ¼Ó£¬ÄÇôÅÌËãЧ¹û¾ÍÊǹýʧµÄ¡£
ÔÚʹÓÃgroup byÒªÁìʱ£¬ÎÒÃÇÓ¦¸Ã×¢ÖØÐÔÄÜÎÊÌ⣬×èÖ¹¶Ô´ó×ÚÊý¾Ý¾ÙÐзÖ×é¡£
ÔÚijЩÇéÐÎÏ£¬ÎÒÃÇÐèÒª¶Ô´ó×ÚÊý¾Ý¾ÙÐÐgroup by²Ù×÷£¬Õâ¿ÉÄܻᵼÖ³ÌÐòÐÔÄÜϽµ¡£ÎªÁË×èÖ¹Õâ¸öÎÊÌ⣬ÎÒÃÇ¿ÉÒÔ˼Á¿Ê¹ÓÃË÷Òý»ò·ÖÇø±íÀ´ÓÅ»¯ÅÌÎÊÐÔÄÜ¡£
ºÃ±È£¬ÎÒÃÇ¿ÉÒÔʹÓÃÒÔÏ´úÂëÀ´½¨ÉèÒ»¸ö¶Ô¶©µ¥±íµÄʱ¼ä×ֶν¨ÉèË÷Òý£º
ALTER TABLE orders ADD INDEX (created_at);
µÇ¼ºó¸´ÖÆ
ÕâÑùÒ»À´£¬ÎÒÃÇ¿ÉÒÔÔÚ¾ÙÐÐgroup by²Ù×÷ʱ¼ÓËÙÅÌÎÊËÙÂÊ£¬Ìá¸ß³ÌÐòÐÔÄÜ¡£
ËÄ¡¢×ܽá
LaravelÖеÄgroup byÓ÷¨ÊǺÜÊÇÎÞаºÍÀû±ãµÄ£¬¿ÉÒÔ×ÊÖúÎÒÃǶÔÊý¾Ý¿â¾ÙÐÐÖÖÖÖͳ¼ÆÆÊÎöºÍ¾ÛºÏ²Ù×÷¡£µ«ÎÒÃÇÔÚʹÓÃËüʱ»¹ÐèҪעÖØһЩÊÂÏÒÔÈ·±£³ÌÐòµÄ׼ȷÐÔºÍÐÔÄÜ¡£Ï£Íû±¾ÎÄÄܹ»×ÊÖú¶ÁÕ߸üºÃµØÃ÷È·ºÍÓ¦ÓÃLaravelÖеÄgroup byÓ÷¨£¬´Ó¶øÌá¸ß¿ª·¢Ð§ÂʺͳÌÐòÖÊÁ¿¡£
ÒÔÉϾÍÊÇlaravel group byÓ÷¨µÄÏêϸÄÚÈÝ£¬¸ü¶àÇë¹Ø×¢±¾ÍøÄÚÆäËüÏà¹ØÎÄÕ£¡