简体   繁体   中英

laravel- how do I properly test eloquent relationship?

I have four tables: users(master), user_info,user_addresses and user_contacts

I created a eloquent relationship among them something like below:

User Model:

 public function user_info(){


        return $this->hasOne('App\Models\UserInfo');
    }

    /**
     * Get the user address associated with the user.
     */

    public function user_address(){
        return $this->hasMany('App\Models\UserAddress');

    }


    /**
     * Get the user contact associated with the user.
     */


    public function user_contact(){

        return $this->hasMany('App\Models\UserContact');
    }

UserInfo model:

 public function user(){

        return $this->belongsTo('App\Models\User');
    }

UserAddress model:

public function user(){

        return $this->belongsTo('App\Models\User');
    }

UserContact model:

public function user(){

        return $this->belongsTo('App\Models\User');
    }

Table structures:

users -> id , email, password,....other unimportant stuff.
user_info -> id, name, identity num, ......
user_address -> id, user_id, address1, address2,address3, shipping address,....
user_contact-> id, user_id, mobile_num,emergency_num,......

For now id column(auto increment) should be treated as key identifier for each user.

I inserted some dummy data to all the tables and I was wondering how do I test if the relationship and everything is correct (I suppose I have to use php artisan tinker)?

Recommended read: Database Testing, from the Laravel documentation

You may use php artisan tinker and $model->relationName()->attach($anotherModel) to test it out in a development environment, but for anything beyond that, building Factories and tests with PHPUnit are recommended.

to answer your question:

Here is Tinker Definition

Tinker is a beautiful laravel package. Laravel Tinker is a powerful REPL for the Laravel framework. REPL stands for Read–Eval–Print Loop. This feature is powered by PsySH console.

Main Function of Tinker

The main function of tinker is to allow you to directly interact with laravel application from the command line such as Eloquent ORM, jobs, events, and more.

So the answer is yes. you can use tinker to test your eloquent relationships. for more info you can read Eloquent: Relationships .

and one more thing for your relationship I prefer using camelCase over _. but if you company or your team prefer _. that's find. but if you want to know about laravel best practice you also can read Here for more.

Thank and hope it can help you. have a nice day

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM