php 一对一关系与反向关系

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php 一对一关系与反向关系相关的知识,希望对你有一定的参考价值。

<?php

namespace App;

use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
    /**
     * 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',
    ];

    // create a public function to return ONE post
    public function post() { 
        return $this->hasOne('App\Post'); // looks for 'user_id' by default
        // return $this->hasOne('App\Post', 'the_user_id'); // write the column as a second paramter if not using 'user_id'
    }

}
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class Post extends Model
{

    use SoftDeletes;

    protected $dates = ['deleted_at'];

    protected $fillable = [ 
        'title',
        'content'
    ];
    
    // returns User that belongs to post
    public function user() {
        return $this->belongsTo('App\User');
    }
}
<?php 

use App\Post; // importing Post model
use App\User; // import User model 

// Get a post that belongs to this user
Route::get('/user/{id}/post', function($id) {
    return User::find($id)->post; // get post
    // return User::find($id)->post->title; // get post title only
});

// Get the user that belongs to a post
Route::get('/post/{id}/user', function($id) {
    return Post::find($id)->user->name; // get user's name
});

以上是关于php 一对一关系与反向关系的主要内容,如果未能解决你的问题,请参考以下文章

CoreData Parent Children 使用单个实体的一对多反向关系

使用反向关系两次?

使用反向字段时自动创建一对一关系

父/子和一对一/对多反向关系之间的核心数据差异

php 与学说的一对一关系

CoreData:通过关系访问对象