auth()->id(),             'vote' => 1,         ]); ...' /> auth()->id(),             'vote' => 1,         ]); ...' />
۳ امیر محمد وثوقی
SQLSTATE[23000]: Integrity constraint violation: 1048 Column \'likeable_id\' cannot be null
جامعه لاراول ایجاد شده در ۱۹ تیر ۱۴۰۲

like controller

        $products->likes()->create([
            'user_id' => auth()->id(),
            'vote' => 1,
        ]);

مشکل میتونه از کجا باشه؟

امیر محمد وثوقی ۱۹ تیر ۱۴۰۲، ۰۷:۳۷

LikeController

    public function definition(): array
    {
        $likeable = $this->likeable();
        return [
            'user_id' => User::first() ?? User::create(),
            'likeable_type' => $likeable,
            'likeable_id' => $likeable::Factory(),
            'vote' => $this->faker->randomElement([1, -1])
        ];
    }
    private function likeable()
    {
        return $this->faker->randomElement([
            User::class,
            Product::class,
        ]);
    }
امیر محمد وثوقی ۱۹ تیر ۱۴۰۲، ۱۰:۵۹

سلام امیر محمد جان، چندتا نکته هست که ممکنه اونا باعث این خطا شده باشن. اول اینکه داخل تابع definition و خطی که likeable_id متد factory رو بصورت حروف کوچک صدا بزنید. مورد دوم اینکه مطمئن بشین که تریت HasFactory رو به مدل‌های یوزر و پروداکت اضافه کرده باشی و مورد سوم اینه که برای این مدل‌ها کلاس فکتوری ساختین؟


در مورد سوال اولتون (کد زیر) هم باید ریلیشن رو بصورت صحیحی نوشته باشید. کدهای مدلتهاتون یا کل پروژه رو روی گیت هاب بزارید و لینکش رو بفرستید راحتتر بتونم راهنمایی کنم.

$products->likes()->create([
            'user_id' => auth()->id(),
            'vote' => 1,
        ]);
بهترین پاسخ
صادق برزگر ۱۹ تیر ۱۴۰۲، ۱۶:۲۱