Model و ذخیره سازی اطلاعات در لاراول

دسته بندی: آموزش
زمان مطالعه: 1 دقیقه
۰۱ تیر ۱۳۹۶

به نام خدا و سلام. برای ذخیره سازی داده ها در جدول های دیتابیس از model ها می شود که وظیفه برقراری ارتباط با دیتابیس و مدیریت تراکنش ها و کوئری ها را بر عهده دارند. در لاراول مدل ها توسط کلاس های خاصی تعریف شده که متد ها و ویژگی های خاصی دارند که در این جلسه بررسی می شوند.

:: توجه

این مطلب یک جلسه از آموزش لاراول مبتدی تا پیشرفته می باشد و برای مشاهده آن باید در دوره ثبت نام کنید.

ثبت نام در آموزش لاراول مبتدی تا پیشرفته

چه امتیازی به این مقاله می دید؟
نویسنده
یادگیرنده ی همیشگی،برنامه نویس،نویسنده،عاشق خلق چیزهای عجیب،عاشق تحلیل داده ها، مسئول بخش فنی و هم بنیان گذار در سون لرن.

جلسات دوره

نظرات کاربران

سینا مشکینی

سلام من یه مشکل دارم تو این قسمت. نقش کاربری رو تغییر میدم، همه چیز اوکیه و تا فایل UserController.php که چک کردم مقدار role تغییر میکنه اما دستور create که اجرا میشه، مقدار role از قسمت attributes حذف میشه و به قسمت guarded میره و توی دیتابیس مقدار پیش فرض 1 (کاربر عادی) ذخیره میشه.
اما وقتی توی کلاس User.php قسمت guarded رو خالی میذارم، مقدار role طبق فرم ارسال شده ذخیره میشه.
استاد علی محمدی عزیز چطور میشه این مشکل رو هندل کرد؟ و اساسا از کجا باید کنترل بشه؟

محسن بابائی

سلام وقت بخیر ، تو این قسمت موقع ذخیره داخل دیتابیس به این مشکل برمیخورم

ReflectionException in Container.php line 749:
Class App\Http\Controllers\Admin\UserController does not exist
کیوان علی محمدی

حتما چک کنید این کلاس وجود داشته باشه و حتما namespace رو بررسی کنید.
App\Http\Controllers\Admin\UserController

محسن بابائی

سلام مشکل بنده برطرف شد
بخاطر این بود که داخل web.php لینکی که تعریف کرده بودم مشکل داشت !!(واقعا مسخرست )
بالاخره بعد از چند روز درستش کردم 🙂

محمدامین عطائی

MassAssignmentException in Model.php line 444:
name

سلام اینو چجوری رفع کنم ؟

کیوان علی محمدی

سلام آموزش ها رو ببینید لطفا و عجله نکنید.

محمدامین عطائی

این مشکلم برطرف شد ولی باز به این مشکل خوردم :

FatalThrowableError in User.php line 7:
Class ‘App\Authenticatable’ not found

<?php

namespace App;

use Illuminate\Notifications\Notifiable;

class User extends Authenticatable
{
    use Notifiable;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    // protected $table = ‘users’;

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $guarded = [‘role’];
    protected $hidden = [
        ‘password’, ‘remember_token’,
    ];
}
کیوان علی محمدی

شما این کلاس رو باید داشته باشید Authenticatable . سرچ کنید و این کلاس رو use کنید.

Reza Jashnsaz

سلام خسته نباشید آقای محمدی .. میگم اگه بخوام هم فیلد role هم فیلد wallet رو guarded$ بذارم باید چجوری اینکارو انجام بدم ؟

محمد

استاد متوجه شدم مشکل از namespace ها بود خیلی ممنونم ?

محمد

استاد علی محمدی من میخوام دوره متخصص شمارو شرکت کنم حتما، اگر مقدور هست براتون این مشکل رو کمک کنید من حل کنم جلسه ۹ موندم دیگه پیشرفت نمیکنم خیلی ممنونتون میشم بزرگوارید ?

محمد

انجام دادم باز نشد, این ارور رو شما متوجه میشید ؟
کد UsersController و کلاس User و اروری که میگیرم رو گذاشتم ممنون میشم راهنمایی بفرمایید

//UsersController
public function store()
    {

        $users=[

          ‘name’=>request()->input(‘name’),
          ’email’=>request()->input(’email’),
          ‘password’=>request()->input(‘password’)


        ];

       User::create($users);

         }

//User class

?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Model
{
    use Notifiable;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */


   protected $fillable=[‘name’,’email’,’password’];




    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        ‘password’, ‘remember_token’,
    ];
}



//get Errors



    in Model.php line 444
    at Model->fill(array(‘name’ => ‘salam’, ’email’ => ‘zahra@gmail.com’, ‘password’ => ‘1234’)) in Model.php line 280
    at Model->__construct(array(‘name’ => ‘salam’, ’email’ => ‘zahra@gmail.com’, ‘password’ => ‘1234’)) in Model.php line 559
    at Model::create(array(‘name’ => ‘salam’, ’email’ => ‘zahra@gmail.com’, ‘password’ => ‘1234’)) in UsersController.php line 44
    at UsersController->store()
    at call_user_func_array(array(object(UsersController), ‘store’), array()) in Controller.php line 55
    at Controller->callAction(‘store’, array()) in ControllerDispatcher.php line 44
    at ControllerDispatcher->dispatch(object(Route), object(UsersController), ‘store’) in Route.php line 190
    at Route->runController() in Route.php line 144
    at Route->run(object(Request)) in Router.php line 653
    at Router->Illuminate\Routing\{closure}(object(Request)) in Pipeline.php line 53
    at Pipeline->Illuminate\Routing\{closure}(object(Request)) in SubstituteBindings.php line 41
    at SubstituteBindings->handle(object(Request), object(Closure)) in Pipeline.php line 137
    at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33
    at Pipeline->Illuminate\Routing\{closure}(object(Request)) in VerifyCsrfToken.php line 65
    at VerifyCsrfToken->handle(object(Request), object(Closure)) in Pipeline.php line 137
    at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33
    at Pipeline->Illuminate\Routing\{closure}(object(Request)) in ShareErrorsFromSession.php line 49
    at ShareErrorsFromSession->handle(object(Request), object(Closure)) in Pipeline.php line 137
    at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33
    at Pipeline->Illuminate\Routing\{closure}(object(Request)) in StartSession.php line 64
    at StartSession->handle(object(Request), object(Closure)) in Pipeline.php line 137
    at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33
    at Pipeline->Illuminate\Routing\{closure}(object(Request)) in AddQueuedCookiesToResponse.php line 37
    at AddQueuedCookiesToResponse->handle(object(Request), object(Closure)) in Pipeline.php line 137
    at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33
    at Pipeline->Illuminate\Routing\{closure}(object(Request)) in EncryptCookies.php line 59
    at EncryptCookies->handle(object(Request), object(Closure)) in Pipeline.php line 137
    at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33
    at Pipeline->Illuminate\Routing\{closure}(object(Request)) in Pipeline.php line 104
    at Pipeline->then(object(Closure)) in Router.php line 655
    at Router->runRouteWithinStack(object(Route), object(Request)) in Router.php line 629
    at Router->dispatchToRoute(object(Request)) in Router.php line 607
    at Router->dispatch(object(Request)) in Kernel.php line 268
    at Kernel->Illuminate\Foundation\Http\{closure}(object(Request)) in Pipeline.php line 53
    at Pipeline->Illuminate\Routing\{closure}(object(Request)) in CheckForMaintenanceMode.php line 46
    at CheckForMaintenanceMode->handle(object(Request), object(Closure)) in Pipeline.php line 137
    at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33
    at Pipeline->Illuminate\Routing\{closure}(object(Request)) in Pipeline.php line 104
    at Pipeline->then(object(Closure)) in Kernel.php line 150
    at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 117
    at Kernel->handle(object(Request)) in index.php line 54

محمد

از کلاس DB::insert استفاده میکنم با موفقیت اطلاعات در جدول درج میشه ولی به شکلی که شما داخل فیلم گفتید یعنی User::create ارور میده! ممنون میشم راهنمایی بفرمایید

کیوان علی محمدی

در داخل کلاس User بخش fillable رو چک کنید و مطمئن بشید همه فیلد هایی که دارین اضافه می کنید در $fillable موجود باشه.

محمد

سلام من وقتی مثل شما میخوام اطلاعات رو وارد جدول کنم به فیلد name ایراد میگیره اگر name رو نذارم به email ایراد می گیره و این ارور رو میده MassAssignmentException in Model.php line 444

محمد پارسا کوشش

سلام استاد . یک سوال داشتم . من در usercontroller کد زیر را قرار دادم اما وقتی کد را save میکنم و مرورگر را Reload میکنم یک اروری میدهد :
FatalThrowableError in userController.php line 22:
Class ‘App\Http\Controllers\admin\user’ not found
چی کاری باید کرد تا این ارور بر طرف بشود ؟
باتشکر از شما .

    public function store()
    {
        user::create(request()->all());
    }
کیوان علی محمدی

سلام همون طور که می بینید این خطا میگه کلاس user نمیتونه پیدا کنه. فضای نام و اسم کلاس رو چک کنید درست نوشته باشید.

Ahad Ghaderi

سلام خسته نباشید من تا اینجای کار کاملا شبیه ویدیوها جلو اومدم اما UserController مدل user رو نمیشناسه و وقتی کد User:Create(reuerst()->all() رو وارد میکنم ارور زیر رو میده. درصورتی که توی ویدیو php storm خودش create رو میشناسه و کامل میکنه.

Symfony \ Component \ Debug \ Exception \ FatalThrowableError (E_ERROR)
Class ‘App\Http\Controllers\admin\User’ not found
کیوان علی محمدی

سلام و ممنون. کلاس User باید به درستی use بشه . اگه فضای نام رو نگاه کنید داره میگه کلاس User در فضای نام admin که ما همچین چیزی نداریم.

کیوان علی محمدی

سلام دوست عزیز در ابتدای کار اینطوری به نظر میرسه. اما وقتی مقیاس پروژه بزرگ و بزرگ تر میشه می بینید که خیلی از کدهای شما داره تکرار میشه و مجبور هستید برای هر چیزی کدنویسی کنید در حالی که فریمورک همه چیز رو از قبل آماده کرده. در یک insert ساده مطمئنا کدنویسی ساده php برنده هست ولی در برنامه های بزرگ تر دست برتری رو فریمورک داره.

پایان زمان پشتیبانی

دانشجوی گرامی، بازه پشتیبانی فعال برای این دوره ۳ ماه است که برای شما به پایان رسیده است.

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

نیاز به لاگین

برای ارسال دیدگاه و یا پرسیدن سوال خود در این قسمت، باید در سایت لاگین شوید.
گزارش مشکل