[KOHANA] Bài 6 Lệnh thao tác truy vấn cơ sở dữ liêu (tt) --kết quả Truy vấn

(tiếp theo)

6. Kết quả truy vấn 

khi bạn thực hiện một query , thông qua từng câu lệnh mà sẽ có kết quả trả về  khác nhau sau khi thực hiện lệnh  execute() . Xem từng loại để xử lý kết quả cho chính xác 

 

6.1 Select

DB::select sẽ trả ra một đối tượng kiểu Database_Result mà chúng ta có thể tương tác dễ dàng .Xem một số ví dụ sau.

Câu lệnh  

$results = DB::select()->from('users')->where('verified', '=', 0)->execute();

xử lý kết quả theo từng thành phần 

foreach($results as $user)

{

    // Send reminder email to $user['email']

    echo $user['email']." needs to verify his/her account\n";

}

6.1.1 Select - as_object() và  as_assoc() (thông qua đối tượng hoặc kết hợp )

phương thức  as_object() sẽ như một tham số để chuyển ra đối tượng ,tên của class sẽ tương ứng như bạn chọn ,sẽ có giá trị TRUE khi sử dụng stdClass.

 xem ví dụ 

$results = DB::select()->from('users')->where('verified', '=', 0)->as_object()->execute();

foreach($results as $user)

{

    // Send reminder email to $user->email

    echo $user->email." needs to verify his/her account\n";

}

phương thức  as_assoc() sẽ xóa tên đối tượng và trả kết quả dạng mảng. Tuy nhiên pohuong7 thức này ít sử dụng 

 

6.1.2 Select - as_array()

dạng này xuất ra dạng mảng. Xem ví dụ 

$results = DB::select('id', 'email')->from('users')->execute();

$users = $results->as_array();

foreach($users as $user)

{

    echo 'User ID: '.$user['id'];

    echo 'User Email: '.$user['email'];

}

Nó cũng chấp nhận 2 tham số là  $key và  $value. khi chuyển kết quả ra  

$key có thể chuyển theo chỉ mục của phần tử .

$results = DB::select('id', 'email')->from('users')->execute();

$users = $results->as_array('id');

foreach($users as $id => $user)

{

    echo 'User ID: '.$id;

    echo 'User Email: '.$user['email'];

}

còn đây là dùng thông qua $value, sẽ chọn cột tương ứng 

$results = DB::select('id', 'name')->from('users')->execute();

$users = $results->as_array('id','name');

// sẽ chuyển ra list box của form

echo Form::select('author', $users)

To return a non-associative array, leave $key as NULL and just pass a $value.

 

?

$results = DB::select('email')->from('users')->execute();

$users = $results->as_array(NULL, 'email');

foreach($users as $email)

{

    echo 'User Email: '.$email;

}

6.1.3 Select - get()

Thỉnh thoảng bạn muốn lấy 1 giá trị đơn. phương thức get() trả về giá trị của cột từ dòng hiện tại. Tham số thứ 2 $default  được sử dụng để cung cấp giá trị mặc định  khi kết quả là NULL

?

$total_users = DB::select(array('COUNT("username")', 'total_users'))->from('users')->execute()->get('total_users', 0);

6.1.4 Select - cached()

??????????????

6.1.5 Select - count()

phương thức  count() trả ra tổng số dòng của kết quả .

 Nên dùng limit để hạn chế chính xác 

6.2 Insert

DB::insert trả ra mảng với 2 giá trị :ID insert cuối cùng và số dòng đã tác động 

$insert = DB::insert('tools')

    ->columns(array('name', 'model', 'description'))

    ->values(array('Skil 3400 10" Table Saw', '3400', 'Powerful 15 amp motor; weighs just 54-pounds'));

 list($insert_id, $affected_rows) = $insert->execute();

6.3 Update & Delete

DB::update và DB::delete trả ra số dòng thực hiện 

 $rows_deleted = DB::delete('tools')->where('model', 'like', '3400')->execute();