当前位置: 首页 > 知识库问答 >
问题:

在Laravel 5.4中访问更多远程模型-更新

杭令
2023-03-14

我有三种型号

Photo  
 -id  
 -path_full  
Person  
-id  
-name  
Face  
-id  
-person_id //was people_id  
-photo_id

我正在尝试从照片模型中访问人名
人脸模型:

public function photo()
{
    return $this->belongsTo(Photo::class);
}

public function person()
{
    return $this->belongsTo(Person::class);
}

照片模型:

public function faces()
{
    return $this->hasMany(Face::class);
}

人物模型:

public function faces()
{
    return $this->hasMany(Face::class);
}

在我的控制器中,我加载如下照片:

$photos = Photo::with('faces')->paginate();

在我的刀片模板中,我想访问照片中的人脸名称。我走了这么远
这是一张foreach的照片:

{{implode($photo->faces->pluck('people_id')->toArray(),', ')}}

我怎样才能得到这个人的名字呢?

解决方案
在我看来,我需要这一点,并注意到我对db to person_id的更改是如此的有说服力,可以实现它的魔力。

//Controller:
$photos = Photo::with('faces.person')->paginate();

//View:
@foreach($photo->faces as $face)
      {{$face->person['name']}}
@endforeach

共有2个答案

鲜于光辉
2023-03-14

试着通过这样改变你的查询来得到脸的人:

Photo::with(['faces' => function($query) {$query->with('person')}])->paginate();

我不太清楚语法,但这就是如何在雄辩的模型中嵌套关系。写这篇文章的较短方法可能是:Photo::with('faces.person')-

这里提供了更多的信息。

司寇山
2023-03-14

您可以在照片模型上调用的所有时间急切加载数据:

// Photo.php
public function faces()
{
    return $this->hasMany(Face::class)->with('person');
}

或者,在查询中,您可以仅在此时对“急切加载”执行以下操作:

$photos = Photo::with('faces', 'faces.person')->paginate();

现在您可以像这样访问:

$photos->first()->faces->first()->person->name; // will print the name of the person of the first face of the first photo...

希望这个回答能有所帮助。

 类似资料:
  • ThinkCMF支持所有ThinkPHP模型用法,其它使用方式请参考: http://www.kancloud.cn/manual/thinkphp/1727

  • 问题内容: 是否可以在Scrapy管道中访问django模型,以便将已抓取的数据直接保存到模型中? 我已经看到了,但是我真的不知道如何设置它吗? 问题答案: 如果还有其他人遇到相同的问题,这就是我解决的方法。 我将其添加到我的scrapy settings.py文件中: 注意:上面的路径是到你的django项目文件夹,而不是settings.py文件。 现在,你将可以在scrapy项目中完全访问d

  • 问题内容: 我已经阅读了有关此问题的主题,例如:[\AngularJS中未更新视图,\但我仍然不明白如何在我的简单示例中应用它。 我有这个功能: 当代码中的其他地方更新时(用户单击,交互,发送XHR请求时),它不会更新我的视图。我知道我需要使用$apply做些事情,但我不知道在哪里以及如何做。 有人可以向我解释如何针对这个简单用例解决此问题吗? 我的模型看起来像这样(如果这个问题是必要的)-它里面

  • 我已将以下代码放在脚本文件的顶部 现在我可以导入我的django应用程序并运行小片段(主要是测试东西) 我想导入通过 我知道https://github.com/django-extensions/django-extensions运行它会自动导入所有型号和更多型号。 我在看他们的代码。不确定我是否能理解。 https://github.com/django-extensions/django-e

  • 问题内容: 我试图弄清楚Angular的工作原理,并在模型更改时无法更新视图。 的HTML JS http://jsfiddle.net/N2G7z/ 有任何想法吗? 问题答案: 正如上面提到的Ajay beniwal一样,您需要使用Apply来开始消化。

  • 问题内容: 我正在尝试使用包含Latex样式方程式的AngularJS双向绑定文本。我想调用MathJax格式化方程式,但是我不确定在AngularJS完成更改模型后确保调用MathJax的最佳方法。我想我需要回调。这是我的JavaScript: } 这是我的HTML: 小提琴在这里:http : //jsfiddle.net/LukasHalim/UVjTD/1/。您会注意到,即使您单击两次更新

  • 我的视图中有一个树查看器,它从标准的Ecore编辑器中监听EMF模型,并用它做进一步的事情。我已经注册了一个选择监听器,它检查所选元素是否是树查看器需要作为输入的类型。因此,问题是,如果模型中有任何变化(例如,向现有元素添加新元素或新信息等),树查看器仅在用户更改选择时才显示更改后的模型,即单击任何模型元素等。 但是我需要做的是,如果底层模型发生变化,树查看器将直接得到通知,并显示新的模型元素,而

  • 我现在迷路了。