【问题标题】:Eloquent Relationship returning but not giving me the attributes雄辩的关系返回但没有给我属性
【发布时间】:2016-03-24 13:01:45
【问题描述】:

我定义的雄辩关系是返回 belongsTo 对象,但实际上并没有让我访问应该在其中的任何属性。

Step.php 中的关系

public function profession()
{
    return $this->belongsTo(__NAMESPACE__.'\\Profession', 'id', 'profession_id');
}

Profession.php 中的关系

public function steps() {
    return $this->hasMany(__NAMESPACE__ . '\\Step', 'id', 'profession_id');
}

我用来返回 belongsTo 关系的代码。

{{ dd(step.profession) }}

我得到的回复是属于 belongsTo 类型的,但它只是不包含有关该职业的任何信息。

【问题讨论】:

  • 我不知道twig,但这可能是相关的stackoverflow.com/questions/29514081/…
  • 您错过了向我们展示您如何实际查询关系的部分,因此可以在视图中使用它。
  • 请不要让belongsTo只取key,foreign_key。您可以在此处删除professional_id。进一步的类可以替换为 Profession::class (PHP 5.5 >=)
  • @J.Eggerstedt 感谢您的回复,但我没能成功。
  • @lesssugar 使用下面的代码完成,然后我使用 for 循环遍历每个单独的循环并打印出值。除了这个专业之外,我可以让所有工作都发挥作用。 $steps = Step::orderBy('name', 'asc')->get()->all();

标签: php laravel laravel-4 eloquent twig


【解决方案1】:

你可以试试 Eager Loading 这样的职业:

Step::with('profession')->orderBy('name', 'asc')->get();

【讨论】:

    【解决方案2】:

    改变你的关系

    Step.php 中的关系

    public function profession()
    {
        return $this->belongsTo(__NAMESPACE__.'\\Profession', 'profession_id');
    }
    

    Profession.php 中的关系

    public function steps() {
       return $this->hasMany(__NAMESPACE__ . '\\Step', 'profession_id');
    }
    

    belongsTohasMany的第二个参数应该是外键而不是主键

    【讨论】:

    • 我这样做了,但我仍然遇到同样的问题。很遗憾,我已经尝试了一些组合,但仍然无法正常工作。
    猜你喜欢
    • 2015-03-13
    • 1970-01-01
    • 1970-01-01
    • 2017-07-29
    • 2015-12-17
    • 1970-01-01
    • 2015-06-27
    • 2021-06-03
    • 2018-06-19
    相关资源
    最近更新 更多