ဒေတာဘေ့စ်လုပ်ငန်းများအတွက် Laravel ကိုအသုံးပြုသောအခါစီးပွားရေးယုတ္တိဗေဒကိုကိုင်တွယ်ရန် Eloquent Orm သို့မဟုတ် Query Refuer ကို အသုံးပြု. ကျွန်ုပ်တို့အများအားဖြင့်အသုံးပြုကြသည်။ သို့သော်ကျွန်ုပ်တို့သည်ပိုမိုရှုပ်ထွေးသောဒေတာဘေ့စ်စစ်ဆင်ရေးများနှင့်ရင်ဆိုင်ရသောအခါရလဒ်အစုအဝေးများကိုပြန်ပို့သောသိုလှောင်ထားသည့်လုပ်ထုံးလုပ်နည်းများကိုပိုမိုများပြားလာသည် ။
ဤဆောင်းပါးသည်လာဗက်ရှိ Nexcrasult () Laravel ရှိပံ့ပိုးမှုနည်းလမ်းများသည်ဒေတာဗတ်စ်၏လုပ်ငန်းလည်ပတ်မှု၏ပြောင်းလွယ်ပြင်လွယ်မှုများကိုတိုးတက်စေရန် Laravel ရှိပံ့ပိုးမှုနည်းလမ်းများသည်အထူးသဖြင့် Multi-very protrescries လုပ်ငန်းခွင်တွင်ပိုမိုကောင်းမွန်စေသည်။
အချို့သောရှုပ်ထွေးသောအစီရင်ခံစာများ (သို့) Multi-effection query certory pamarios များတွင်အထူးသဖြင့် MySQL သိုလှောင်မှုဆိုင်ရာလုပ်ထုံးလုပ်နည်းများတွင်ရွေးချယ်မှုမျိုးစုံ) အချို့ဒေတာဘေ့စ်လုပ်ငန်းများအတွက်ရလဒ်များစွာရှိသည်။ Laravel's default database abstrace abstrace အလွှာသည် Next_result () ကိုတိုက်ရိုက်ထောက်ခံမှုမပေးချေ။
သင့်တွင်အောက်ပါ MySQL သိမ်းဆည်းထားသောလုပ်ထုံးလုပ်နည်းများရှိသည်ဆိုပါစို့။
DELIMITER //
CREATE PROCEDURE GetUserStats(IN userId INT)
BEGIN
SELECT * FROM users WHERE id = userId;
SELECT COUNT(*) AS post_count FROM posts WHERE user_id = userId;
END //
DELIMITER ;
ဤလုပ်ထုံးလုပ်နည်းကိုခေါ်ဆိုခြင်းရလဒ်နှစ်ခုကိုပြန်ပို့လိမ့်မည်။ တစ်ခုမှာအသုံးပြုသူအချက်အလက်ဖြစ်ပြီးအခြားအသုံးပြုသူအတွက်ဆောင်းပါးအရေအတွက်ဖြစ်သည်။
ရလဒ်အလုံးစုံကိုကိုင်တွယ်ရန်အထောက်အကူပြုစာတန်းများကိုကျွန်ုပ်တို့ဖန်တီးနိုင်သည်။
namespace App\Support;
use Illuminate\Support\Facades\DB;
class MultiResultSet
{
protected $connection;
public function __construct()
{
$this->connection = DB::connection()->getPdo();
}
public function callProcedure(string $procedure, array $bindings = [])
{
$stmt = $this->connection->prepare("CALL {$procedure}");
$stmt->execute($bindings);
$results = [];
do {
$result = $stmt->fetchAll(\PDO::FETCH_ASSOC);
if ($result) {
$results[] = $result;
}
} while ($stmt->nextRowset());
return $results;
}
}
Multi-rights ပြန်လည်ရောက်ရှိမှုကိုကိုင်တွယ်ရန်ဤအတန်းကိုခေါ်ပါ။
use App\Support\MultiResultSet;
$multi = new MultiResultSet();
$results = $multi->callProcedure('GetUserStats(?)', [1]);
$user = $results[0][0] ?? [];
$postCount = $results[1][0]['post_count'] ?? 0;
သင် (ဥပမာ MySQL ကဲ့သို့သောရလဒ်အစုံများကိုထောက်ပံ့သောဒေတာဘေ့စ်ယာဉ်မောင်းကိုသင်အသုံးပြုနေကြောင်းသေချာပါစေ။
အကယ် . MySQL server တစ်ခုကြုံတွေ့ရပါက Laravel တွင်အမှားပျောက်ကွယ်သွားပါက Max_allowed_packet နှင့် connection timeout configuration ကိုစစ်ဆေးရန်လိုအပ်သည်။
ဤအင်္ဂါရပ်ကို ပိုမို. စွယ်စုံစေရန်ကျွန်ုပ်တို့အကြံပြုပါသည်။
ဝန်ဆောင်မှုပေးသူသို့မဟုတ် Laravel အဖြစ် enadsulated;
သစ်ထုတ်လုပ်ခြင်းနှင့်ခြွင်းချက်ကိုင်တွယ်ခြင်းထည့်ပါ။
ပြန်လာသောရလဒ်များကို format လုပ်ပါ (ဥပမာ DTO သို့မဟုတ် Collection သို့ပြောင်းလဲခြင်း) ။
Laravel သည် Next_result ကိုတိုက်ရိုက်မထောက်ပံ့ပါ။ ရှုပ်ထွေးသောမေးမြန်းချက်များ, သတင်းပို့ခြင်းစနစ်များသို့မဟုတ်အမွေအနှစ်စနစ်များကိုရွှေ့ပြောင်းနေထိုင်စဉ်ကာလအတွင်းဒေတာဘေ့စ်အပြန်အလှန်ဆက်သွယ်မှုလိုအပ်ချက်များအတွက်ဤနည်းလမ်းသည်အထူးသဖြင့်သင့်လျော်သည်။
Laravel ၏အဖြစ်အပျက်ကိုနားထောင်ခြင်း, သစ်ထုတ်လုပ်ခြင်းသို့မဟုတ်သိုလှောင်ခြင်းကဲ့သို့သောဤအင်္ဂါရပ်ကိုထပ်မံချဲ့ထွင်ရန်သင်သည် https://gitbox.net သို့လည်း code paster များနှင့်လက်တွေ့အတွေ့အကြုံများဝေမျှခြင်းအတွက်လည်းဝင်ရောက်နိုင်သည်။