【问题标题】:Laravel Eloquent Relationships - Join TablesLaravel Eloquent 关系 - 连接表
【发布时间】:2021-01-05 21:44:58
【问题描述】:
    class Withdraw extends Model
    {
    
       public function getUser()
        {
            return $this->belongsTo(User::class, 'user_id', 'id');
        }
    
        public function getStatus()
        {
            return $this->belongsTo(WithdrawStatus::class, 'status_id', 'id');
        }
    
     public static function getWithDrawList()
        {
            $data = Withdraw::with(['getUser' => function ($q) {
                        $q->select('users.*', 'trainer_details.default_acc_name', 'trainer_details.default_bank_id',
                        'trainer_details.default_acc_number');
                        $q->join('trainer_details', 'users.id', '=', 'trainer_details.user_id');
                    }])
                    ->with(['getStatus'])
                    ->get()
                    ->toArray();      
                    
           return $data;
        }
}

银行表数据

id,name

getwithdrawlist 的数据返回

Array
(
    [0] => Array
        (
            [id] => 1
            [user_id] => 2
            [amount] => 200.0000
            [status_id] => 4
            [created_at] => 
            [updated_at] => 2020-09-18T15:53:13.000000Z
            [get_user] => Array
                (
                    [id] => 2
                    [name] => lim
                    [default_acc_name] => lim
                    [default_bank_id] => 1
                    [default_acc_number] => 123156
                )

            [get_status] => Array
                (
                    [id] => 4
                    [status] => Rejected
                    [created_at] => 2020-09-18T14:09:41.000000Z
                    [updated_at] => 2020-09-18T14:09:41.000000Z
                )

        )
)

问题:上面的代码是检索所有用户的详细信息,所以总共需要连接4个表才能得到完整的数据,即users、withdrawstatus、withdraw、banks。我已成功将 3 个表链接在一起,但我未能将数据与 banks 连接起来。这是否意味着银行详细信息应该在 [get_user] 的数组中返回?有谁知道如何使用 Laravel 关系加入另一个 banks 的表吗?请指教:((。

【问题讨论】:

  • 银行模型与现有模型有何关系?

标签: php laravel eloquent eloquent-relationship


【解决方案1】:

据此

$data = 取款::with(['getUser' => function ($q) { $q->select('users.*', 'trainer_details.default_acc_name', 'trainer_details.default_bank_id', 'trainer_details.default_acc_number'); $q->join('trainer_details', 'users.id', '=', 'trainer_details.user_id'); }]) ->with(['getStatus']) ->获取() ->toArray();

将不会检索您需要执行多次连接的所有数据,具体取决于您在您的情况下拥有 4 个关系的关系数量,因此您需要在前导 3 个连接处进行连接

$data = 取款::with(['getUser' => function ($q) { $q->select('users.*', 'trainer_details.default_acc_name', 'trainer_details.default_bank_id', 'trainer_details.default_acc_number'); $q->join('trainer_details', 'bank.id', '=', 'trainer_details.user_id'); $q->join('trainer_details', 如果你有其他关系,请在这里放置其他关系,'=', 'trainer_details.user_id'); }]) ->with(['getStatus']) ->获取() ->toArray();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-21
    • 1970-01-01
    • 1970-01-01
    • 2015-01-01
    • 2021-05-09
    • 2021-05-06
    • 1970-01-01
    相关资源
    最近更新 更多