Postingan lainnya
Bagaimana cara ambil data tertentu bedasarkan user yang login
sebagai contoh saya login sebagai user a seharusnya yang saya inginkan user a hanya bisa melihat artikel user a, sedangkan disini permasalahannya user a bisa melihat semua artikel user lainnya. bagaimana caranya ya agar user yang login hanya melihat artikel nya sendiri.
public function index()
{
$artikels = Auth::user()->id;
$artikels = Artikel::paginate(10);
return view('artikel.artikel', ['artikels' => $artikels]);
}
ini source code index untuk menampilkan artikelnya
ini permasalahannya karena user imansetyawan seharusnya hanya bisa melihat artikel imansetyawan tetapi seharusnya tidak bisa melihat artikel user lain
5 Jawaban:
di sintak sqlnya harusnya kasih filter berdasarkan author , jadi
select * from artikel where author='nama_author';
CMIIW Thanks
ada cukup banyak tekniknya gan, tergantung situasi. 1. kasus dashboard - anggaplah ketika user telah login maka mereka dibawa ke dashboard masing2. tapi dashboardnya tetap dengan URL yang sama. misal URL www.myweb.com/dashboard. - ini berarti semua user yang login akan dibawa ke URL tersebut, yang membedakan cuma kontennya. - untuk kasus seperti ini kita bisa mendapatkan POST user yang bersangkutan melalui relasi eloquentny. - yang perlu dilakukan adalah: a. tambahkan di MODEL USER satu fungsi baru sebagai berikut:
// tambah fungsi ini di MODEL USER
public function post(){
// disini kita katakan bahwa setiap user akan memiliki banyak post
// keterangan: itu PostModel sesuaikan dengan nama MODEL POST yang agan gunakan
return $this->hasMany->('App\PostModel');
}
b. terima relasinya di MODEL POST
// tambah fungsi ini di MODEL POST
public function user(){
// disini kita katakan bahwa setiap post hanya akan dimiliki oleh 1 user
// keterangan: itu UserModel sesuaikan dengan nama MODEL USER yang agan gunakan
return $this->belongsTo->('App\UserModel');
}
c. setelah membuat relasi ini, masih perlu buat lagi user_id di table post (database). kalau agan sudah selesaikan a-b dengan benar maka agan hanya perlu menambah kolom di table post dengan nama 'user_id'. laravel secara default tahu bahwa kalau ada relasi dan ditable agan ada kolom 'titiktitik_id', maka table tersebut memiliki relasi terhadap 'titiktitik'. ya dalam kasus ini berarti MODEL USER, karena agan tambah kolom 'user_id'.
d. nanti untuk mendapatkan post user bersangkutan agan hanya perlu melakukan:
// ini dilakukan di Controller
// ini mengambil semua post user bersangkutan.
$post = Auth::user()->post();
e. satu lagi saat mau save post gunakan relasi ini agar secara otomatis 'user_id' di table bisa diisi berdasarkan id user yang post.
$post = new PostModel;
$post->judul = 'judul post';
Auth::user()->post()->save($post); // ini secara otomatis akan mengisi 'user_id' dengan Auth::user()->id
dan seterusnya.
Agar lebih mudah, bikin aja 3 tabel di Database.
tabel1 = users tabel2 = articles tabel3 (pivot table) = user_article atau article_user
tabel users isinya:
id | username | fullname | email | dll
tabel articles isinya:
id | title | slug | content | dll
(pivot table) tabel user_article atau article_user isinya:
id | user_id | article_id
Nah, kalau sudah begitu nanti enak managemen-nya, jadi kita bisa tahu dengan mudah artikel apa saja yang dimiliki oleh user. Kalau pakek query kita bisa join atau bikin relationship. Kalau di Laravel sudah dipermudah dengan fitur database relationship-nya (belongsTo(), belongsToMany(), hasMany(), hasManyThrough(), dll).
Kalau di Laravel kira-kira bisa dibuat gini:
// file model User
// tambahin fungsi ini
public function articles()
{
return $this->belongsToMany('Model\Article\Disini');
}
*relationship (many) di Laravel butuh yang namanya pivot table. Kalau pivot table user_article tidak bisa, coba dibalik jadi article_user.
Model Untuk User
public function data()
{
// Setiap user akan memiliki banyak data
return $this->hasMany('App\Data','user_id');
}
Ini Controllernya
public function index()
{
$tampilkan_data = Auth::user()->data()->paginate(10);
$jumlah_data = count($tampilkan_data['data']);
return view('data.index', compact('tampilkan_data', 'jumlah_data'));
}
Tanggapan
gan saya mengalami masalah yang sama, bolehkah saya lihat controller dan model anda? saya coba pakai Auth::user()->data()->paginate(10); saya dapat error Call to undefined method App\User::data()