没有关系的表的 Laravel Eloquent 关系问题

Posted

技术标签:

【中文标题】没有关系的表的 Laravel Eloquent 关系问题【英文标题】:Problem with Laravel Eloquent reltionships for tables without relations 【发布时间】:2021-06-19 08:51:12 【问题描述】:

我,有口才关系的问题。 这是我的数据库

https://i.stack.imgur.com/2we4g.jpg https://i.stack.imgur.com/20KeG.jpg

我在合作伙伴表的 santander 列中有 Santander ID,我想使用这两个表中的数据,就像一个表中的数据一样

这是我的 Partner.php 模型:

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Partner extends Model

    use HasFactory;



    protected $table='partner';
    protected $connection='mysql2';

    protected $guarded = [];


    public $primaryKey = 'id';


    public function santander()
    
        return $this->hasOne(Santander::class, 'id', 'santander');
    



这是我的 Santander.php 模型:

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Santander extends Model

    use HasFactory;



    protected $table='santander';
    protected $connection='mysql2';

    protected $guarded = [];

   
    public $primaryKey = 'id';



    public function partner()
    
        return $this->belongsTo(Partner::class, 'id', 'santander');
    


在控制器中,我使用这样的 Eloquent 集合:

 use App\Models\Partner;
 use App\Models\Santander;

 $partners = Partner::paginate(10);

在视图中。我是这样使用它的:

@foreach partners as partner
      $partner->santander->operator 
@endforeach

但它会产生错误:

试图获取非对象的属性“santander”

【问题讨论】:

您在刀片文件中拼写为 $pratners 而不是 $partners? 鉴于我正确地写了它。我只在 *** 上打错字了。 【参考方案1】:

首先,您确定关系本身吗? $this-&gt;hasOne(Santander::class, 'id', 'santander');

第一个额外的参数应该是外键,所以假设模型Santander中的相关列名为santander,那么它应该是:$this-&gt;hasOne(Santander::class, 'santander', 'id'); (指定的id 作为最后一个参数可以省略)

其他模型中的关系也是如此。

【讨论】:

感谢您的尝试,但我更改了此设置,但没有帮助。现在有同样的错误:尝试获取非对象的属性“操作员”

以上是关于没有关系的表的 Laravel Eloquent 关系问题的主要内容,如果未能解决你的问题,请参考以下文章

Laravel Eloquent 表之间通过其他表的关系

Laravel Eloquent 关系 - 表的多列引用相同的外键

与多个中间表的多对多 Laravel Eloquent 关系

Laravel eloquent 从不一定有关系的表关系中将数据从大到小排序

Laravel Eloquent 所有与关系

Laravel五大功能之Eloquent关系模式