Php 如何从Laravel中的两个相关表中获取所有数据[一对多]
我在Laravel是个新手,需要编写一个简单的后端API。 我做错了,我不知道是什么,因为我从供应商表和空数组中获取了一些数据:[] 我试图从两个相关的表格中获取所有数据-付款和供应商。 这是一种一对多关系,付款表中的供应商ID与供应商中的ID相连接。在这里,我给您一个图形表示: 这是我的密码: Suppliers.php模型 我得到以下答案:Php 如何从Laravel中的两个相关表中获取所有数据[一对多],php,laravel,Php,Laravel,我在Laravel是个新手,需要编写一个简单的后端API。 我做错了,我不知道是什么,因为我从供应商表和空数组中获取了一些数据:[] 我试图从两个相关的表格中获取所有数据-付款和供应商。 这是一种一对多关系,付款表中的供应商ID与供应商中的ID相连接。在这里,我给您一个图形表示: 这是我的密码: Suppliers.php模型 我得到以下答案: [{"id":1,"name":"Ekonaft","adress":"33-100 Tarnow ","email":"ekonaft@gmail.
[{"id":1,"name":"Ekonaft","adress":"33-100 Tarnow ","email":"ekonaft@gmail.com","payments":[]},
{"id":2,"name":"Orlen","adress":"Ares testowy","email":"email@email.pl","payments":[]}]
我做错了什么,在每个对象的末尾得到了空数组付款:[]?尝试付款的反向关系
belongsTo = has a foreign key to another table
举出一个例子
这是您可以通过付款访问供应商的方式
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Payments extends Model
{
public function suppliers()
{
return $this->belongsTo('App\Suppliers');
}
}
像贝尔一样改变你的关系
Suppliers.php模型
由于未匹配表关系键名称,您将获得付款的空数组:[
Please, make few changes in both relational function.
public function payments()
{
//return $this->hasMany('App\Model', 'foreign_key', 'local_key');
return $this->hasMany('App\Payments', 'suppliers_id');
}
public function suppliers()
{
//return $this->belongsTo('App\Model', 'foreign_key', 'other_key');
return $this->belongsTo('App\Suppliers', 'suppliers_id');
}
为了更好地理解,您可以直接从Laravel文档中了解更多关于雄辩关系的信息
如果仍然出现相同的错误,请告诉我。现在,它工作正常。谢谢。但是你能帮我修改一下我的密码吗?我想得到一点不同的结果。现在我有供应商和付款的所有记录。如何从付款中读取所有记录并获取供应商名称而不是供应商ID。您的查询将类似于获取一个至少有一笔付款的供应商:$PAYMENTS=SUPPLIERS::whereHas('PAYMENTS')->with('PAYMENTS')->get();要从付款中读取所有记录并获取供应商名称而不是供应商ID,可以使用反向关系$payments=payments::with('suppliers')->get();谢谢!你拯救了我的夜晚。欢迎@obaram
belongsTo = has a foreign key to another table
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Payments extends Model
{
public function suppliers()
{
return $this->belongsTo('App\Suppliers');
}
}
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Suppliers extends Model
{
public function payments()
{
return $this->hasMany('App\Payments','suppliers_ID','id');
}
}
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Suppliers extends Model
{
public function payments()
{
return $this->hasMany(App\Payments::class, 'suppliers_ID', 'id');
}
}
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Payments extends Model
{
public function suppliers()
{
return $this->belongsTo(App\Suppliers::class, 'suppliers_ID', 'id');
}
}
Please, make few changes in both relational function.
public function payments()
{
//return $this->hasMany('App\Model', 'foreign_key', 'local_key');
return $this->hasMany('App\Payments', 'suppliers_id');
}
public function suppliers()
{
//return $this->belongsTo('App\Model', 'foreign_key', 'other_key');
return $this->belongsTo('App\Suppliers', 'suppliers_id');
}