THẢO LUẬN

thg 11 6, 2017 4:03 SA

(love) (goodjob) hay quá đồng chí ơi

0

Mong bạn tiếp tục ra nhiều bài viết về angular js v1 nhé.

0
thg 11 5, 2017 4:20 CH

Cảm ơn anh 😄

0
thg 11 5, 2017 3:48 CH

Lodash chứ sao lại Loadash 😸

+1

thanks bro 😃

0
thg 11 5, 2017 1:12 CH

😄 chưa đc dễ hiểu lắm ông ạ.

0
thg 11 5, 2017 4:28 SA

Giọng văn vừa vui vừa dễ hiểu 😄

0
thg 11 5, 2017 3:30 SA
0
thg 11 5, 2017 2:26 SA

Mình nghĩ bạn đang lấy ví dụ cho Factory Method Pattern, chứ không phải Abstract Factory pattern.

0
thg 11 4, 2017 10:59 SA

2 đoạn này nếu chuyển về rxjava2 sẽ code như thế nào anh. Bình thường em hay dùng CompositeDisposable rồi add Maybe hoặc Completable vào thôi. Chưa hiểu được lắm ạ. 😄

0
thg 11 4, 2017 10:19 SA

Mình cũng làm theo cách của bạn là tạo token (một chuỗi random) lưu vào trường "user_token" và gửi link dạng abc.com/reset/{user_id}/{user_token}.

Giả sử string token đó là "abc" id là 7, link reset là abc.com/reset/7/abc

Như bạn nói, mã hóa "abc" kia thành MD5 -> 900150983cd24fb0d6963f7d28e17f72

Vậy cái chuỗi MD5 này sẽ thay thế chuỗi "abc" trong DB, khi người dùng click link trên, mình sẽ mã hóa MD5 cho GET token trên URL đó, rồi đem so sánh md5 get và md5 DB, đúng thì cho đổi, phải như vậy ko bạn?

0

bạn ơi có phần 2-2 ở đâu nhỉ nếu được có thể gửi source code cho mình được không?langtusitinh8888@gmail.com Mình cảm ơn!

0

Sao từ đầu bạn lại dùng having nhỉ, having chỉ dùng với group by, chỉ có MySQL support dạng having <alias>.

Theo mình vấn đề ở đây là, khi phân trang, Laravel chạy thêm 1 câu query để lấy số lượng:

select count(*) as aggregate from `locations` inner join `shops` on `shop_id` = `shops`.`id` where `locations`.`deleted_at` is null having `distance` <= 100

=> Lỗi phát sinh ở đây.

Về solution của bạn, theo mình hiểu là bạn dùng 2 câu select lồng nhau:

return app(Location::class)->distance($latitude, $longitude, $radius)
    ->join('shops', 'shop_id', '=', 'shops.id')
    ->select('shops.*',  'distance');

Được chuyển thành:

select shop.*, distance from (select *, ... as distance from locations join shops on shop_id = shops.id...) as items...

Mình thấy ko tốt lắm, thứ nhất performance có thể bị ảnh hưởng vì 2 câu query lồng nhau, thứ hai là hàm getSql() binding bằng tay thực sự không tốt:

  • $value = is_numeric($binding) ? $binding : "'" . $binding . "'";
    

    => nếu string có chứa ' thì sao? Có thể bị sql injection ko?

  • $sql = preg_replace('/\?/', $value, $sql, 1);
    

    => nếu có đã có dấu ? trước đó trong câu sql (vd: select * from abc where a like 'how?%' and b like ?) thì kết quả sẽ sai?

Dấu ? ở đây được sử dụng cho prepared statement chứ không replace thủ công như thế.

Về solution đơn giản nhất ở đây là bạn bê cả đoạn của alias distance vào whereRaw() do sql không support where <alias column>. Lưu ý là nên prefix column trong raw sql với table name để tránh trùng column khi join.

Nếu dùng cách của bạn, bạn có thể dùng các hàm addBinging, mergeBindings... của query builder thay vì replace string thủ công.

+1
thg 11 3, 2017 7:49 SA

Cám ơn bạn.

0

Mình đang gặp vấn đề như mục 1. nếu không dùng MobX. thì có cách nào giải quyết được vấn đề này k? Cảm ơn

0
thg 11 3, 2017 5:47 SA

hay quá

0

Cám ơn bạn HIếu đã cung cấp bài viết rất hữu ích! 😄

0
thg 11 3, 2017 3:10 SA

Cảm ơn bạn, mong bạn sẽ tiếp tục theo dõi các bài viết của mình ^^

0
thg 11 3, 2017 12:51 SA

quá nhiều chữ đỏ đọc chói mắt quá (sad4)

0
thg 11 3, 2017 12:46 SA

!! (phủ định đôi) chuyển đổi kiểu dữ liệu sang boolean. Nó sẽ tự động chuyển đổi mọi kiểu dữ liệu về boolean và biến này sẽ trả về false khi nó có những giá trị như: 0, null, "", undefined hoặc NaN, ngược lại nó sẽ trả về true.

0
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í