php - 没有关系的表的 Laravel Eloquent 关系问题
问题描述
我,有口才关系的问题。这是我的数据库
https://i.stack.imgur.com/2we4g.jpg https://i.stack.imgur.com/20KeG.jpg
我在合作伙伴表的桑坦德列中有桑坦德 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
但它会产生错误:
试图获得非对象的属性“桑坦德”
解决方案
首先,您确定关系本身吗?
$this->hasOne(Santander::class, 'id', 'santander');
第一个额外参数应该是外键,所以假设模型中的相关列Santander
被命名santander
,那么它应该是:(
$this->hasOne(Santander::class, 'santander', 'id');
指定id
为最后一个参数可以省略顺便说一句)
另一个模型中的关系也是如此。
推荐阅读
- python-3.x - 使用 Batch .bat 安排 Python Selenium 每天运行
- angular - 使用本地主机配置 angular rest url
- python - Python 抛出列表索引超出范围错误
- r - 为什么在因子上使用 as.numeric() 时没有警告?
- amazon-web-services - 如何删除目标组中的最后一条规则
- python - 类型错误:列表索引必须是整数或切片,而不是 str 尝试使用 cx_Freeze 将 .py 文件转换为 .exe 时
- python - Keras:使用 flow_from _directory() 函数为两个输入模型创建自定义生成器
- php - Mysql SELECT并按高数显示
- visual-studio - Visual Studio 2019 中的无效绑定
- python - 如果有重复的推文,如何修复让 Tweepy 从随机用户中随机重新选择?