【问题标题】:Laravel one to one relationship not work only show null messageLaravel 一对一关系不起作用只显示空消息
【发布时间】:2021-03-17 15:03:58
【问题描述】:

我的数据库中有 2 个表并试图从中获取数据,这是我的数据库架构:

---------------       ---------------
|     pg      |       |   phone     |
===============       ===============
|    id       |       |    id       |
|    name     |       |    telp     |
|    address  |       |    pg_id    |
===============       ===============

电话表属于pg,我有这样的pg模型:

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Pg extends Model{
    protected $table = "pg";

    public function telepon(){
        return $this->hasOne('App\Models\Phone', 'pg_id', 'id');
    } 
}

这是我的手机型号:

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Phone extends Model{
    protected $table = "phone";

    public function pg(){
        return $this->belongsTo('App\Models\Pg', 'pg_id', 'id');
    }
}

这是我在 Controller 中获取数据的代码:

$pg = Pg::find(1);
return view('inpform', ['data' => $pg]);

在我的视图中,我转储了数据,但结果为 NULL,如果我将代码更改为:

$pg = Pg::all();
return view('inpform', ['data' => $pg]);

它只显示表 pg 中的数据,我想要它们之间的关系。

【问题讨论】:

  • $pg = Pg::with('telepon')-&gt;find(1);$pg = Pg::with('telepon')-&gt;get(); laravel.com/docs/8.x/eloquent-relationships#eager-loading
  • 它的作品,谢谢,但我可以在 laravel 8.* 下使用它吗?
  • 这是laravel从一开始的核心功能。
  • 谢谢你它的工作希望你把这个作为答案发布,这样我就可以把它设置为正确的答案。

标签: php laravel eloquent eloquent-relationship


【解决方案1】:

您已经定义了关系,但这并不自动意味着它们将与模型相关联。您有两种选择来急切加载这些关系。您可以更改控制器代码以请求加载关系:

$pg = Pg::with('telepon')->find(1);
// or
$pg = Pg::with('telepon')->get();

或者,如果您始终需要此数据,您可以将其添加到模型的 $with 属性中。

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Pg extends Model
{

    protected $table = "pg";

    public function telepon()
    {
        return $this->hasOne(Phone::class);
    } 

    /**
     * The relationships that should always be loaded.
     *
     * @var array
     */
    protected $with = ['telepon'];
}

这将导致每次访问任何Pg 模型时都会加载关系。

【讨论】:

  • 谢谢您,非常感谢您的帮助。我是新的 laravel 用户。
猜你喜欢
  • 2020-03-14
  • 1970-01-01
  • 2014-05-22
  • 2020-05-30
  • 1970-01-01
  • 2020-09-21
  • 2019-06-07
  • 2018-08-12
  • 2020-10-16
相关资源
最近更新 更多