关于模型关联 hasOne 和 belongsTo 的使用场景和 sql 语句

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    /**
     * Get the phone record associated with the user.
     */
    public function phone()
    {
        return $this->hasOne('App\Phone');
    }
}
$phone = User::find(1)->phone;

请问执行的sql是如何的?如何验证和查出来呢?

然后和belongsTo

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Phone extends Model
{
    /**
     * 获得拥有此电话的用户
     */
    public function user()
    {
        return $this->belongsTo('App\User');
    }
}
$user = Phone::find(1)->user;

有什么不同呢?

如何判断用hasOne还是belongsTo呢?

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 3

自问自答

hasone 和 belongsto 主要看表设计 主表 从表的区别

主表(父表) 在数据库中建立的表格即 Table,其中存在主键 (primary key) 用于与其它表相关联,并且作为在主表中的唯一性标识。

从表(子表) 以主表的主键(primary key)值为外键 (Foreign Key) 的表,可以通过外键与主表进行关联查询。从表与主表通过外键进行关联查询。

主表用 hasone 从表用 belongsto

3年前 评论

belong的英文中就有属于的意思,所以在从表中用关联肯定是用belongsto。

3年前 评论

概念上自问自答了。那我推一个打印请求过程中 SQL 打印到 log 的插件吧 overtrue/laravel-query-logger :blush:

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!