आप इसे DB::statement
. का उपयोग करके हल कर सकते हैं , DB:raw
और DB::select
।
कोड मेरे Laravel 5.0 परीक्षण वातावरण पर परीक्षण किया गया है और यह पूरी तरह से काम करता है।
आपके mysql कथन का भी परीक्षण किया गया है यह MySQL कंसोल पर पूरी तरह से काम करता है।
यहां कोड है:
DB::statement(DB::raw('SET @prev=0,@rownum=0'));
$results =
DB::select(
DB::raw("
SELECT utilizador_id, nome
FROM (
SELECT *,
IF( @prev <> utilizador_id,
@rownum := 1,
@rownum := @rownum+1
) AS rank,
@prev := utilizador_id,
@rownum
FROM (
SELECT * FROM `anuncios`
ORDER BY utilizador_id, rand()
) AS random_ads
) AS ads_ranked
WHERE rank <= 2;
")
);
परिणाम देखें
echo "utilizador_id | nome <br />";
foreach ($results as $result)
{
echo $result->utilizador_id . "__________| " . $result->nome . "<br />";
}
याद रखें जोड़ने के लिए use DB;
नाम स्थान के बाद:
<?php
namespace App\Http\Controllers;
use DB;
मैंने केवल सभी परिणाम आउटपुट प्रदर्शित करने के लिए परिणाम देखें कोड बनाया है, लेकिन यह आप पर निर्भर है कि आप अपने कोड में डेटा में हेरफेर कैसे करें।
परीक्षा के परिणाम
MySQL कंसोल में आपके mysql कथन के यादृच्छिक परिणाम
लारवेल में आपके mysql कथन के यादृच्छिक परिणाम
नोट:
1- मैंने आपके लिए इस प्रश्न को स्वयं हल कर लिया है लेकिन मुझे एक छोटी सी समस्या का सामना करना पड़ा और मुझे लैराकास्ट फोरम में क्रिप्टोनिट 3 से इनपुट मिला।
2- आपको इस प्रश्न के अन्य समाधान मिल सकते हैं या इसे विभिन्न तरीकों से हल किया जा सकता है, लेकिन मैंने इस तरह से हल करना चुना है।
नोट 1 में पूरा प्रश्न और उत्तर यहां पाया जा सकता है। ।