လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> PDostatement အသုံးပြု. အသိုက်အရာဝတ်ထုများကိုပြန်ပို့ခြင်းအတွက်အချက်အလက်များလုပ်ဆောင်ချက်များ --: FetCObject

PDostatement အသုံးပြု. အသိုက်အရာဝတ်ထုများကိုပြန်ပို့ခြင်းအတွက်အချက်အလက်များလုပ်ဆောင်ချက်များ --: FetCObject

gitbox 2025-05-12

PMP နှင့် PDO ကိုနေ့စဉ်အခြေခံအားဖြင့်အသုံးပြုသောအခါ PDostatement :: Fetchobjection သည်အလွန်အဆင်ပြေသောနည်းလမ်းတစ်ခုဖြစ်ပြီး, သို့သော်ပုံမှန်အားဖြင့်၎င်းကိုသာဖန်တီးနိုင်ပြီးပိုမိုရှုပ်ထွေးမှုကိုအလိုအလျောက်ကိုင်တွယ်လိမ့်မည်မဟုတ်ပါ။ ပရိုဖိုင်း အရာဝတ်ထုတစ်ခုကိုအသိုက်ကိုအသိုက်လုပ်ရန် အသုံးပြုသူ အရာ 0 တ်ထုကဲ့သို့သောအသိုက်အဖုံးများပါ 0 င်လိုပါကသင်ကိုယ်တိုင်လုပ်ဆောင်ရန်လိုအပ်သည်။

ဒီရည်မှန်းချက်ကိုတစ်ဆင့်ပြီးအောင်ဘယ်လိုအောင်မြင်ရမယ်ဆိုတာကြည့်ရအောင်။

နမူနာနောက်ခံ

မင်းမှာဒီလိုစားပွဲနှစ်ခုရှိတယ်ဆိုပါစို့။

 CREATE TABLE users (
    id INT PRIMARY KEY,
    name VARCHAR(100),
    profile_id INT
);

CREATE TABLE profiles (
    id INT PRIMARY KEY,
    bio TEXT,
    avatar_url VARCHAR(255)
);

သင်သည်အသုံးပြုသူအချက်အလက်များကိုမေးမြန်းလိုပြီး ပရိုဖိုင်း အရာဝတ်ထုတစ်ခုကိုအသိုက်လုပ်နေစဉ် အသုံးပြုသူ အရာဝတ်ထုသို့ပြောင်းလဲလိုသည်။

ဥပမာအားဖြင့်, ငါဒီဆင်တူဖွဲ့စည်းပုံရဖို့မျှော်လင့်ပါတယ်:

 User {
    id => 1,
    name => 'Alice',
    profile => Profile {
        id => 2,
        bio => 'Hello world!',
        avatar_url => 'https://gitbox.net/uploads/avatar.jpg'
    }
}

အဆင့် 1 - သက်ဆိုင်ရာလူတန်းစားကိုသတ်မှတ်ပါ

အသုံးပြုသူ နှင့် ပရိုဖိုင်း အတွက် PHP အတန်းများကိုဖန်တီးရန်လိုအပ်သည်။

 class Profile {
    public int $id;
    public string $bio;
    public string $avatar_url;
}

class User {
    public int $id;
    public string $name;
    public Profile $profile;
}

အဆင့် 2 - အချက်အလက်များကိုပရိုဖိုင်းအချက်အလက်များထည့်သွင်းပါ

ဇယားနှစ်ခုမှဒေတာများကိုတစ်ချိန်တည်းတွင်ရယူရန် joiness joint မေးမြန်းမှုကိုသင်အသုံးပြုနိုင်သည်။

 $sql = "
    SELECT 
        u.id AS user_id,
        u.name AS user_name,
        p.id AS profile_id,
        p.bio AS profile_bio,
        p.avatar_url AS profile_avatar_url
    FROM users u
    JOIN profiles p ON u.profile_id = p.id
";
$stmt = $pdo->query($sql);

အဆင့် 3 - အသိုက်ကိုစိတ်ကြိုက်ပြုပြင်ရန် FetchObject ကိုသုံးပါ

FetchOccoboject ကို ပုံမှန်အားဖြင့်အချက်အလက်အလွှာတစ်ခုသာသာမြေပုံများကိုသာသာမြေပုံများကိုသာ သတ်မှတ်. မိမိကိုယ်ကိုအသိုက်အကျင့်များကိုစုသိမ်းရန်လိုအပ်သည်။ သင်ဤသို့လုပ်နိုင်သည် -

 while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    $user = new User();
    $user->id = (int) $row['user_id'];
    $user->name = $row['user_name'];

    $profile = new Profile();
    $profile->id = (int) $row['profile_id'];
    $profile->bio = $row['profile_bio'];
    $profile->avatar_url = $row['profile_avatar_url'];

    $user->profile = $profile;

    // ယခု $user ၎င်းတွင်အသိုက်ပါရှိသည် Profile ၏အရာဝတ်ထု
    var_dump($user);
}

သိကောင်းစရာများ - အထွေထွေနည်းလမ်းသို့ encapsulate

သင်ဤအရာကိုကိုင်တွယ်ရန်မကြာခဏလိုအပ်ပါက၎င်းကို gadget function တစ်ခုထဲသို့သင်ခန်းစာယူနိုင်သည်။

 function mapRowToUser(array $row): User {
    $user = new User();
    $user->id = (int) $row['user_id'];
    $user->name = $row['user_name'];

    $profile = new Profile();
    $profile->id = (int) $row['profile_id'];
    $profile->bio = $row['profile_bio'];
    $profile->avatar_url = $row['profile_avatar_url'];

    $user->profile = $profile;

    return $user;
}

// အသုံးပြု
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    $user = mapRowToUser($row);
    var_dump($user);
}

ကောက်ချက်

PDostatement :: FetchObjectObject ကိုယ်နှိုက်သည်အသိုက်အရာ 0 တ်ထုများကိုတိုက်ရိုက်မဖန်တီးနိုင်ပါ။ ဤနည်းလမ်းသည်ပိုမိုလုံခြုံစိတ်ချရလွယ်ကူပြီးရိုးရှင်းသောခင်းကျင်းခြင်းထက် ပို. လုံခြုံသည်။

အကယ်. သင်သည်ပိုမိုရိုးရှင်းလိုပါကဤမြေပုံများကိုအလိုအလျောက်ဆက်လက်လုပ်ဆောင်ရန်အတွက် Orm tools များ (eloquent, donstrine) ကိုပေါင်းစပ်ရန်စဉ်းစားနိုင်သည်။