Anlaşılan ben daha çook mesai harcamam gerekicek .
Birisi bir arkadaşlık sistemi yazmış bende bunu anlamlandırıp kendime farklı bişeyler yapmaya çalışıyorum öğrenme amacıyla incliyor didikliyorum kısaca bu yaptığın ben eloquentle mant to many ile yapmaya çalışıyorum diyelim ..
Öncelikle kurulu hiçbir ilişki yok
Bu Friend modeli basit ve sade
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Friend extends Model
{
use HasFactory;
protected $fillable = ['requester', 'user_requested', 'status'];
}
buda yazdığı Trait
<?php
namespace App\Traits;
use App\Models\Friend;
trait Friendable {
public function add_friend($user_requested_id){ //Talep(istenen) edilen kullanıcının id si fonksiyona gidecek
$friendship = Friend::create([
'requester' => $this->id, // İsteği yapan (Kimliği doğrulanmış kullanıcı giriş yapmış)
'user_requested' => $user_requested_id //Talep(istenen) edilen kullanıcının id si
]);
if ($friendship) {
return 1;
}
return 0;
}
}
Buda Friendcontrolerderdeki store metodu
public function store(Request $request, User $user)
{
auth()->user()->add_friend($user->id);
return back();
}
tüm bunların route ise
Route::prefix('friends')->name('friends.')->group(function() {
Route::post('/{user}', [FriendController::class, 'store'])->name('store');
});
bu adrese bu aşşagıdaki kodu kullanarak bir buton ile arkadaş eklemeyi yapabiliyor
data(){
return {
addFriendForm: this.$inertia.form({
user: this.profile
}),
}
},
methods:{
addFriend() {
this.loading = true
this.addFriendForm.post(this.route('friends.store', this.profile.id), {
preserveScroll: true,
onSuccess: ()=>{},
})
},
}
Hiç bir eloquent ilişki kurulmayan bu sistemde
benim için add friend içinde bulunan
'user_requested' => $user_requested_id //Talep(istenen) edilen kullanıcının id si
bu satır gayet mantıklı , istek yapılacak kullanıcının profiline girildiğinde prop içinde buraya gönderilkecek id mevcut ve gönderiliyor
bu satır
'requester' => $this->id, // İsteği yapan (Kimliği doğrulanmış kullanıcı giriş yapmış)
bu örnekte şöyle anlamlandırıyorum bu trait user modeline ekli oldugundan ve friend controllerde
public function store(Request $request, User $user)
{
auth()->user()->add_friend($user->id);
return back();
}
yani burda auth()->user()-> hem o an giriş yapmış kullanıcı adını verdiğinden hemde user modelinde eklenmiş add_friend fonksiyonunu çağırdıgından bir tık anlamlı geliyor
ama işin içinde Auth olmuş kullanıcı olmayınca ve bıu kodu kendime göre değiştirmek istediğimde
şu this->id ye anlam veremediğimden böyle bir konu açtımki halada anlamlandıramadım .
bu arada kıymetli zamanın ve cevabın için çok teşekkür ederim