THẢO LUẬN

thg 7 16, 2018 8:48 SA

Auth::user()->load('roles'); đây có phải từ model user() trỏ tới roles() phải k a

+1
thg 7 16, 2018 8:43 SA

Bài viết hay quá, hy vọng bạn tiếp tục serie để mình học thêm 😄

+2

Thực sự quá hay

0
Avatar
đã bình luận câu trả lời trong câu hỏi
thg 7 16, 2018 8:06 SA

Anh xem giúp em thông số đã được chưa ạ

config database

      'mysql' => [
        'driver' => 'mysql',
        'host' => env('DB_HOST', 'localhost'),
        'port' => env('DB_PORT', '3306'),
        'database' => env('DB_DATABASE', 'forge'),
        'username' => env('DB_USERNAME', 'forge'),
        'password' => env('DB_PASSWORD', ''),
        'unix_socket' => env('DB_SOCKET', ''),
        'charset' => 'utf8mb4',
        'collation' => 'utf8mb4_unicode_ci',
        'prefix' => '',
        'strict' => true,
        'engine' => null,
    ],

.env

  DB_CONNECTION=mysql
  DB_HOST=192.168.10.10
  DB_PORT=33060
  DB_DATABASE=Nhim13
  DB_USERNAME=root
  DB_PASSWORD=root
   unix_socket=/Applications/MAMP/tmp/mysql/mysql.sock
0

Nhưng sau một hồi đọc rồi hiểu các kiểu về JOIN, thì mới nhận ra rằng nó chính là những truy vấn dữ liệu mà mình vẫn hay làm thường ngày, nhưng chỉ có điều là nó làm ngắn gọn và tăng tốc độ truy vấn lên thôi.

Lúc đọc đến đoạn này mình nghĩ bạn đang muốn nói đến điều này chứ nhỉ ?.

SELECT * FROM adress JOIN client ON adress.client_id = client.id
# tương đương với
SELECT * FROM adress, client WHERE adress.client_id = client.id 
+2
thg 7 16, 2018 6:48 SA

mai đức trung best logic ✌️

+1
thg 7 16, 2018 6:35 SA

Cảm ơn bạn, mình quên mất khi bỏ sót những hình bên dưới

+1
thg 7 16, 2018 6:31 SA

Không rõ vô tình hay hữu ý nhưng bài viết của bạn đã không có đầy đủ các ảnh minh họa như bài viết gốc => dẫn đến bài dịch của bạn bị giảm giá trị khoảng 10 lần so với bài viết gốc và người đọc nhanh chóng bỏ đi sau khi cuộn xuống đến hết bài viết của bạn. Bạn nên khắc phục lại xem sao.

-2

Mục đích của bài viết là hướng tới việc validate form bạn nhé...

0
thg 7 16, 2018 5:59 SA

oke e 😄

0

Chuyển qua xài Ant Design sẽ thấy tuyệt vời hơn.

+1
thg 7 16, 2018 4:30 SA

Mình thấy đây là một bài viết tệ, rất sơ sài và nội dung chỉ là dịch từ wiki, những bài viết như này mình nghĩ sẽ làm loãng những topic chất lượng hơn, thiết nghĩ khi đã viết post bạn nên đầu tư công sức hơn. Cảm ơn bạn

0
thg 7 16, 2018 4:15 SA

Anh hay quá mong được học hỏi anh nhiều hơn ❤️

+1
thg 7 16, 2018 4:13 SA
  1. e đọc ở trong bài của a ở Model User, có hàm roles, ở đó a thiết lập quan hệ 1-nhiều, tức 1 user có thể có nhiều roles. Sử dụng employee−>roles() a lấy được danh sách roles của 1 user. Sau đó a dùng hàm attach(hàm này laravel hỗ trợ) để thêm quyền cho user đó.
  2. this->roles() trả về danh sách quyền của 1 user giả sử là array1. Sau đó dùng whereIn để duyệt toàn bộ array1, so sánh trường name trong đó, chỉ cần nó match với 1 kết quả trong mảng roles truyền vào là được, tức là chỉ cần match đc 1 kết quả thì biểu thức $this->roles()->whereIn('name', $roles)->first() sẽ khác null, suy ra biểu thức null !== $this->roles()->whereIn('name', $roles)->first() sẽ trả về true. Còn nếu ko match với cái nào thì trả về false
0
thg 7 16, 2018 3:56 SA

ad ơi markdown này giống markdown của githup không. nó có hỗ trợ highlight syntax và emoji không.

0
Avatar
đã bình luận cho bài viết
thg 7 16, 2018 3:19 SA

Styled-component hiện tại đang là mạnh nhất!.

0
thg 7 16, 2018 3:16 SA

Từ phiên bản 16.3 trở đi thì vẫn hỗ trợ lifecycle này, và từ 16.3 đã có lifecycle mới và từ từ 17 trở đi thì lifecyle này không còn đúng nữa.

lifeCycle sẽ như sau:

Mounting: constructor => getDiviredStateFromProps => render => componentDidMount Update: getDiviredStateFromProps => shouldComponentUpdate => render => getSnapshotBeforeUpdate => componentDidUpdate. Unmounting: componentWillMount.

MÌnh khuyên các bạn đang đọc bài nãy hãy quay lại trang reactjs.org để đọc lại document nhé.

+1
thg 7 16, 2018 3:06 SA

Cho e hỏi 2 câu cuối cùng với a:

  1. $employee->roles()->attach($role_employee); cho e hỏi hàm roles() từ đâu mà gọi thế a ???
  2. return null !== $this->roles()->whereIn('name', $roles)->first(); a giải thích giúp e vụ in với tks a nhiều ❤️
0
thg 7 16, 2018 3:03 SA

hàm hasAnyRole nhần vào 1 mảng danh sách các quyền để check nếu 1 user có 1 trong các quyền đó. Đoạn đó a dùng toán tử "||" (hoặc), Nếu có 1 trong các quyền thì trả về true thì toàn bộ biểu thức this−>hasAnyRole(roles) || abort(401, 'This action is unauthorized.'); trả về true, còn nếu không có thì trả về mã lỗi 401 với thông báo "'This action is unauthorized", e đọc thêm phần dưới khi có lỗi 401 mình fallback về 1 trang HTMl cho thân thiện 😃

0
thg 7 16, 2018 2:58 SA
return $this->hasAnyRole($roles) || 
             abort(401, 'This action is unauthorized.');

return mà thêm || abort... là sao a... mới vào nghề đọc k hiểu a ơi :v

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í