如何在Laravel 5.4中从一对一关系中检索数据

时间:2017-09-01 07:55:25

标签: php laravel

我有两个MSSQL表,所以我创建了两个模型[Adress]和[Webshop]。两个表中的外键都是Adresse。

1.Model [Adress]

class Adress extends Model
{
    protected $table = "Adress";
    protected $primaryKey = 'Adresse';
    public $timestamps = false;

    public function webshop()
    {
        return $this->hasOne('App\Webshop', 'Adresse');
    }
}

2.Model [WebShop]

class Webshop extends Model
{
    protected $table = "Webshop";
    protected $primaryKey = 'Adresse';
    public $timestamps = false;

    public function adress()
    {
        return $this->belongsTo('App\Adress','Adresse');
    }
}

我想创建一个包含来自第一和第二个表的数据的表,如webshopID,mobile位于[Webshop]表中,并在[Adress]表中进行地址。我认为这是这两个表之间的一对一关系。

php artisan tinker中的

App\Adress::all();          -> this is working 
App\Adress::find(2910)->webshop  -> this is also working
App\Adress::with('webshop')->get() -> this is NOT working

我想同时从这两个表中检索数据。这可能是一种关系还是我可以使用连接?

编辑: 也许我的外国人错了

地址表: enter image description here

网上商店表: enter image description here

2 个答案:

答案 0 :(得分:0)

尝试将Address模型中的关系更改为

$this->hasOne('App\Webshop', 'Adresse', 'Adresse');

并在Webshop模型中

$this->belongsTo('App\Address', 'Adresse', 'Adresse');

修改

现在检索你可以做的关系

$webshop = App\Address::find($id)->webshop;
$address = App\Webshop::find($id)->address

答案 1 :(得分:0)

请试试这个 -

use App\Adress;
use App\Webshop;

$result = Webshop::with('Adress')->where('Webshop.id',$id)->get();
or
$result = Adress::with('Webshop')->where('Adress.id',$id)->get();

希望这会对你有所帮助。