محمد
4 سال پیش توسط محمد مطرح شد
3 پاسخ

سیستم لایک در لاراول

سلام دوستان
من برای مقالات می خوام سیستم لایک و دیس لایک درست کنم و فقط کاربران لاگین شده باشن
یک table به نام likes درست کردم و ستون های user_id و blog_id هرکدوم رابطه یک به چند با user و blog دارن

Schema::create('likes', function (Blueprint $table) {
$table->unsignedBigInteger('blog_id');
$table->foreign('blog_id')->references('id')->on('blogs')->onDelete('cascade');
$table->unsignedBigInteger('user_id');
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
$table->unique(['blog_id' , 'user_id']);
});

تو مدل هم روابط رو درست کردم

class Like extends Model
{
use HasFactory;
protected $fillable = [ 'blog_id' , 'user_id'];
public function user()
{
return $this->belongsTo(User::class);
}
public function blog()
{
return $this->belongsTo(Blog::class);
}
}

حالا در کامپوننت لایو وایر اول چک کردم که لاگین کرده یا نه
بعد می خوام چک کنم اگه قبلا لایک کرده بود لایک کم بشه و اگر نه یک لایک اضافه بشه ولی اینو نمیدونم چجوری انجام بدم
کد کامپوننت

class AllBlogs extends Component
{
public function addLike($id)
{
if (Auth::user()) {
$blog = Blog::findOrFail($id);
}else{
alert()->error('برای لایک باید وارد سایت شوید');
}
}
public function render()
{
$blogs= Blog::with('likes')->paginate(3);
return view('livewire.all-blogs' , compact('blogs'))->layout('user.layouts.mater');
}
}

الان در متد addLike نمیدونم چیکار کنم
ممنون میشم راهنمایی کنید
@mohaligateway
@Rp76
@juza66
@ali.bayat
@hesammousavi


javascript
javascript
javascript
تگ‌های محبوب
ثبت پرسش جدید
سبحان مولایی
تخصص : برنامه‌نویس وب: Python ::...
@websaz 4 سال پیش مطرح شد
0

سلام از این کد استفاده کنید.

class AllBlogs extends Component
{
public function addLike($id)
{
if (Auth::user()) {
$blog = Blog::findOrFail($id);
$like = Like::where('blog_id',$id)->where('user_id',auth()->user()->id)->first();
if ($like)
$like->delete();
else {
$like = Like::create(['blog_id'=>$id,'user_id'=>auth()->user()->id]);
}
}else{
alert()->error('برای لایک باید وارد سایت شوید');
}
}
public function render()
{
$blogs= Blog::with('likes')->paginate(3);
return view('livewire.all-blogs' , compact('blogs'))->layout('user.layouts.mater');
}
}

@mrn


محمد
تخصص : Laravel
@mprogrammer7 4 سال پیش مطرح شد
2

@websaz
لایک درست کار میکنه ولی دیس لایک ارور میده

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'id' in 'where clause' (SQL: delete from `likes` where `id` is null)

محمد
تخصص : Laravel
@mprogrammer7 4 سال پیش مطرح شد
3

به جای

    $like->delete();

اینو گزاشتم درست شد

$blog->likes()->where('user_id' , \auth()->user()->id)->delete();

خیلی ممنون
@websaz


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام