Php 显示表中的一列在Laravel中有许多关系

Php 显示表中的一列在Laravel中有许多关系,php,laravel,has-many,Php,Laravel,Has Many,在我的项目中,我的房产和视频有很多关系。我试图显示属性表中的标题,该标题属于视频表中相应的视频 properties (id, title) videos (id, model_id, filename_video) 这里model_id是指向properties表的外键。使用当前代码,我可以显示所有标题。感谢您的帮助。这是我的密码 Property.php <?php namespace App; use Illuminate\Database\Eloquent\Model; c

在我的项目中,我的房产和视频有很多关系。我试图显示属性表中的标题,该标题属于视频表中相应的视频

properties (id, title)

videos (id, model_id, filename_video)
这里model_id是指向properties表的外键。使用当前代码,我可以显示所有标题。感谢您的帮助。这是我的密码

Property.php

<?php
namespace App;

use Illuminate\Database\Eloquent\Model;

class Property extends Model
{
    protected $guarded = ['id'];

    public function videos()
    {
        return $this->hasMany(Video::class, 'model_id');
    }
}
videos.blade.php

<h1 class="font-weight-light text-center text-lg-left mt-4 mb-0">
    Videos for 
    @foreach($results as $result)
        {{$result->title}}
    @endforeach
</h1>

请尝试这样设置:

Property.php

<?php
namespace App;

use Illuminate\Database\Eloquent\Model;

class Property extends Model
{
    protected $guarded = ['id'];

    public function videos()
    {
        return $this->hasMany(Video::class, 'model_id');
    }
}
Video.php

<?php
namespace App;

use Illuminate\Database\Eloquent\Model;

class Video extends Model
{
    protected $guarded=['id'];

    public function properties()
    {
        return $this->belongsTo(Property::class);
    }

}
控制器

你应该试试这个:

$results = DB::table('properties')
       ->join('videos', 'properties.id', '=', 'videos.model_id')
       ->pluck('title');

你到底在展示什么?带有属性标题或属性列表的视频列表?@Karan我有该页面的视频,其中列出了该属性的所有视频。我试图在页面顶部显示该属性的标题。例如,“该物业的所有权”的视频结果查询的输出是什么?@Karan Collection{297▼ 项目:阵列:2[▼ 0 => {307 ▼ +标题:aaaaaaaaaaaaaaaa}1=>{304▼ +标题:这是project one!!!}]}@Karan的标题,或者简单地说,是来自不同属性的标题。我需要一个明确的标题。在本例中,“项目一的标题!!!”找不到我获取列:1054“where子句”中的未知列“videos.property\u id”SQL:select*from videos where videos.property\u id=22和videos.property\u id不为空您的属性应该有一个视频。再次检查答案我更新了itI从不同的属性中获取标题,我只需要该特定属性的一个标题。在查询中,您拥有所有数据,因为您拥有->获取如果您想要一个标题,请使用->查找->首先指定哪个标题。当我使用第一个标题时,它会为所有属性获取相同的结果。我需要属于该属性的标题我试图获取非对象错误的属性“title”
class Video extends Model
{
    protected $guarded=['id'];

    public function properties()
    {
        return $this->belongsTo(Property::class, 'model_id');
    }
}
$results = Property::with('videos')->where('title', $property->title)->get();
$results = DB::table('properties')
       ->join('videos', 'properties.id', '=', 'videos.model_id')
       ->pluck('title');