[英]Problem with Laravel Eloquent reltionships for tables without relations
我,eloquent 关系有问题。 这是我的数据库
https://i.stack.imgur.com/2we4g.jpg https://i.stack.imgur.com/20KeG.jpg
我在合作伙伴表的桑坦德列中有桑坦德 ID,并希望使用这两个表中的数据,例如一个
这是我的合作伙伴。php model:
<?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');
}
}
这是我的桑坦德银行。php model:
<?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');
}
}
在 controller 我使用 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');
第一个额外参数应该是外键,因此假设 model Santander
中的相关列名为santander
,那么它应该是:
$this->hasOne(Santander::class, 'santander', 'id');
(顺便说一句,指定的id
作为最后一个参数可以省略)
其他 model 中的关系也是如此。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.