THẢO LUẬN

thg 6 19, 2018 8:52 SA

that's right 😄

0
thg 6 19, 2018 8:46 SA

Em cám ơn anh ạ... ChuChoa.. cái này là tricky khủng nhất mà e từng xem.. 😄 😄

+1
Avatar
đã bình luận cho bài viết
thg 6 19, 2018 8:43 SA

Session sẽ mất khi Session time out nhé. Hoặc là khi phía server cố tình remove nó khi user log out chẳng hạn.

0
thg 6 19, 2018 8:37 SA

@minhtuancnttk39 Cách làm a update lại vào trong answer rồi nha. Bonus luôn cái ảnh gif demo nữa.

+2
thg 6 19, 2018 8:27 SA

hay

0

phần 3 sao lâu zậy bạn ?

+2
thg 6 19, 2018 8:15 SA

nếu bắt buộc bạn cần dùng lazy loading thì trước khi render page bạn có thể dùng regex để chuyển cái src của bạn thành data-origin. nhưng dùng regex không cẩn thận có thể làm chậm hơn.

0
thg 6 19, 2018 7:47 SA

Nice post!

0

xử lý theo cách bất đồng bộ thôi, async vs await chẳn hạn

0

bài viết hay quá em (y)

+1
thg 6 19, 2018 7:05 SA

Dạ, e biết cái đó ạ, nhưng em không thêm được mấy cái font-awesome ấy a.

A có cách gì không ạ?

0
thg 6 19, 2018 7:01 SA

ờ ha, cám ơn bạn nhiều

0

Giờ mới biết công ty product lại không thích nhân sự outsourcing đấy ^^

0

Góp ý: không nên dịch product owner thành chủ sản phẩm, một số từ chuyên môn nên được dùng từ gốc tiếng Anh thay vì dịch.

+1

=)) bạn phải chạy hàm foo() bên trong bar nữa chứ. Mỗi khai báo thì làm sao nó chạy được

+1
thg 6 19, 2018 4:39 SA

đẹp giai thế 😄

0
thg 6 19, 2018 4:39 SA

Bạn ơi, mình làm phiền bạn thêm chút xíu nữa, trường hợp nếu mình khai báo hàm foo() bên trong hàm barr(), tức là code sẽ như thế này:

function bar() {
    var a = 3;
    function foo() {
      var a = 2; //=> khi bỏ dòng này đi
      console.log(a);
   }
}

var a = 'Ahihi';
bar();

Tại sao khi bỏ dòng var a= 2 thì nó lại không log ra giá trị nào cả. Mình tưởng hàm foo() nằm trong Scope của hàm bar() nên nó có quyền truy cập vào biến var a = 3 => tức là nó sẽ in ra giá trị 3 chứ nhỉ. Trường hợp này giải thích thế nào hả bạn ?

0

Tất nhiên, sau khi bạn git add rồi commit ngay thì sẽ không sao. Còn bạn git add, xong sau đó vào chỉnh sửa file trong thư mục source thì git ko băm phần edit mới đó nhé, mà chỉ băm version bạn đã git add thôi.

nice!

0

Để tường minh mình sẽ có một folder test, bên trong có chứa 1 file test_commit.rb, trong file này có đoạn text this is test file. cd đến folder test, chạy git init sẽ có folder .git Hiện tại bên trong folder objects ở trong .git có thể được coi là trống trơn Sau đó thực hiện commit $ git commit -m 'First time init' Lúc này sẽ thấy thay đổi bên trong folder objects

Bạn chưa add mà, chỗ này nó sẽ không commit được.

$ git log --oneline
# Log commit
c83dd69 First time init
(END)

Nó sẽ ra như này:

LongNX@LPP00039344K MINGW64 ~/OneDrive/OneDrive - FPT Software/App/GoTiengViet (master)
$ git log --oneline
fatal: your current branch 'master' does not have any commits yet

0

Cám ơn bài viết của bạn. Mình có thấy vài chỗ nhầm lẫn trong bài nên cho mình list ra nhé

  1. Tính bảo mật Eloquent ORM có tính bảo mật cao hơn QueryBuilder trong việc phòng chống SQL Injection.

Cái này chắc bạn đang nói đến kiểu viết bên dưới nhỉ

DB:raw('select * from users where id =' . $id);

Chúng ta có thể dùng PDO parameter binding để tránh khả năng SQL bị tấn công, nên mình nghĩ để tránh thì phải quán triệt dùng PDO binding với các bạn developer trong team
Vd:

DB::select(
'select * from users where id = :id',
['id' => $id]
);

Note: Cẩn thận với whereRaw trong DB facade vì query sẽ không được escape

4.Lấy một trường của tất cả bản ghi .

$name = DB::table('users')->lists('name');
$users = Users::lists('name');

Hình như ví dụ này đã bị out of date so với version 5.6
Với Eloquent thì mình nghĩ sẽ dùng hàm pluck

User::pluck('name');

Còn với Query builder chúng ta dùng select thay vì dùng hàm lists (hàm list đã bị deprecated từ 5.3 thì phải)

DB::table('users')->select('name')->get();
  • Lưu ý đối tượng trả về là Laravel Collection chứ không phải array thông thường

8.Delete $user->destroy();

Hàm destroy phải gọi static function chứ không phải instance function, và hàm destroy nhận vào ID của record muốn delete.

User::destroy(1);

Ngoài ra mình đồng tình với việc cú pháp code của Eloquent dễ hiểu hơn (về mặt business). (Hiệu suất thì mình chưa bandwidth nên cũng chưa khẳng định được 😄) Nhưng thấy hơi không rõ ràng ở chỗ

Eloquent ORM dễ dàng kết nối với database hơn QueryBuilder.

Theo mình hiểu thì Eloquent, đến cuối cùng khi giao tiếp với tầng Database thì cũng sử dụng Query Builder
Chúng ta có thể tham khảo class Illuminate\Database\Eloquent\Builder để thấy rằng cuối cùng Eloquent cũng sử dụng Query Builder khi tương tác với DB
Có nghĩa là Eloquent là một wrapper về mặt business cho Query Builder, làm cho code dễ đọc hơn, và cũng cung cấp nhiều business methods hơn QueryBuilder như Eloquent Relationships, Soft delete, Eloquent Events...
Nên khi nói đến tính dễ dàng kết nối, mình nghĩ ORM base trên Query Builder nên sẽ không đánh giá.

+1
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí