EloquentORM 远层一对一

预案层一对一关联通过单一中间关系链接模型。

例如,如果每个供应商都有一个用户,同时每个用户都与一个用户历史记录相关联,这样,供应商模型就可以通过用户来访问用户的历史。下面我们来看看定义这个关联关系所需的数据表结构:

users
    id - integer
    supplier_id - integer

suppliers
    id - integer

history
    id - integer
    user_id - integer

history 数据表不包含 supplier_id 列,hasOneThrough 关联仍然可以为供应商提供对用户历史的访问。

现在,已经知道关联关系对应的数据表结构,接下来在 Supplier 模型上定义这个关联

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Supplier extends Model
{
    /**
     * Get the user's history.
     */
    public function userHistory()
    {
        return $this->hasOneThrough(
            'App\History',
            'App\User',
            'supplier_id', // Foreign key on users table...
            'user_id', // Foreign key on history table...
            'id', // Local key on suppliers table...
            'id' // Local key on users table...
            );
    }
}
Copyright © http://blog.webfsd.com 2018 all right reserved,powered by Gitbook该文件修订时间: 2019-05-21 04:55:26

results matching ""

    No results matching ""