ارور ذخیره شدن اطلاعات بر روی دیتابیس

3 سال پیش توسط MHT مطرح شد
آفلاین
user-avatar
MHT ( 1279 تجربه )
3 سال پیش

لینک کوتاه اشتراک گذاری

0

سلام و وقت بخیر.
موقع تمرین Eloquent Relationships به این ارور برخوردم:Call to a member function products() on null
نمیدونم برای چی این ارور رو میگه چون روی یک سیستم دیگه با همین کدها نتیجه گرفتم. اینها هم کدهاش هستن:

public function up()
{
Schema::create('products', function (Blueprint $table) {
$table->increments('id');
$table->unsignedInteger('user_id');
$table->string('name');
$table->integer('weight');
$table->integer('price');
$table->text('description');
$table->timestamps();
$table->foreign('user_id')
->references('id')
->on('users')
->onDelete('cascade')
->onUpdate('cascade');
});
}

public function user(){
return $this->belongsTo(User::class);
}

public function products(){
return $this->hasMany(Product::class);
}

public function store(Request $request)
{
Auth::user()->products()->create($request->except('_token'));
dd('finish');
}

به این خط ارور میده:

    Auth::user()->products()->create($request->except('_token'));

ممکنه مشکل از ذخیره شدن تو دیتابیس باشه؟ چون به صورت دستی نمیتونم چیزی وارد کنم.
این لینک رو هم دیدم، مشابه اشکال من هست اما درست نشد.
https://stackoverflow.com/questions/36925728/laravel-5-1-create-a-product-linked-to-user-id

بهترین پاسخ
آفلاین
user-avatar
وحید رضازاده
3 سال پیش

@maedehtoosi
سلام
احتمالا کاربر لاگین نکرده
چون این خطا داره میگه که شما دارین متد products رو روی یک مقدار null فراخوانی میکنیم

آفلاین
user-avatar
وحید رضازاده ( 17169 تجربه )
3 سال پیش
تخصص : برنامه نویس

لینک کوتاه اشتراک گذاری

1

@maedehtoosi
سلام
احتمالا کاربر لاگین نکرده
چون این خطا داره میگه که شما دارین متد products رو روی یک مقدار null فراخوانی میکنیم

آفلاین
user-avatar
MHT ( 1279 تجربه )
3 سال پیش

لینک کوتاه اشتراک گذاری

0

@vahidrezazadeh
اوه، واقعا ممنونم. اصلا یادم رفته بود php artisan make:auth رو بنویسم.
ولی الان هم این ارور رو میده:
Argument 1 passed to Illuminate\Database\Eloquent\Relations\HasOneOrMany::create() must be of the type array, object given, called in C:\laragon\www\laravel\app\Http\Controllers\ProductController.php on line 33

یعنی به این خط:
Auth::user()->products()->create($request);
یعنی چی باید آرایه باشه؟

آفلاین
user-avatar
MHT ( 1279 تجربه )
3 سال پیش

لینک کوتاه اشتراک گذاری

0

@vahidrezazadeh
خب کامل درست شد. نمیدونم کاری که کردم درسته یا نه.
این تیکه رو توی دیتابیس تغییر دادم:
$table->unsignedInteger('user_id')->nullable();

برای ارسال پاسخ لازم است، ابتدا وارد سایت شوید.