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

avatar imansetyawan
@imansetyawan

21 Kontribusi 0 Poin

Diperbarui 6 tahun yang lalu

5 Jawaban:

please help me !
avatar taxshadow
@taxshadow

2 Kontribusi 0 Poin

Dipost 7 tahun yang lalu

di sintak sqlnya harusnya kasih filter berdasarkan author , jadi

select * from artikel where author='nama_author';

CMIIW Thanks

avatar dziem
@dziem

68 Kontribusi 43 Poin

Dipost 7 tahun yang lalu

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.

avatar onirusama
@onirusama

265 Kontribusi 184 Poin

Dipost 7 tahun yang lalu

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.

avatar dalikewara
@dalikewara

351 Kontribusi 260 Poin

Dipost 7 tahun yang lalu

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'));
}

avatar aguuus
@aguuus

3 Kontribusi 1 Poin

Dipost 6 tahun yang lalu

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()

Login untuk ikut Jawaban