Php 如何从Laravel中的外键查看表字段

Php 如何从Laravel中的外键查看表字段,php,database,laravel,laravel-5,foreign-keys,Php,Database,Laravel,Laravel 5,Foreign Keys,我是拉威尔的新手,语法不好。我想通过另一个表的外键ID查看该表的值 您可以在这张图片中看到,我在user&class下获得ID。我想要与这些ID关联的标题 我有表格、分区、用户和一个类。我使用class_id和user_id作为section表中的外键。当我试图显示数据时,我看到了id,但我希望从该id中提取名称和其他字段 控制器 公共功能指数 { $sections=Section::all; $classs=classs::all; $users=User::all; 返回视图'sectio

我是拉威尔的新手,语法不好。我想通过另一个表的外键ID查看该表的值

您可以在这张图片中看到,我在user&class下获得ID。我想要与这些ID关联的标题

我有表格、分区、用户和一个类。我使用class_id和user_id作为section表中的外键。当我试图显示数据时,我看到了id,但我希望从该id中提取名称和其他字段

控制器

公共功能指数 { $sections=Section::all; $classs=classs::all; $users=User::all; 返回视图'sections.index'->带有'sections',$sections->带有'classs',$classs->带有'users',$users; } 刀片/视图

所有部分 名称 班 使用者 修改 @foreach$节作为$cat {{$cat->title} {{$cat->class_id} {{$cat->user_id} id}}数据切换=模式数据目标=编辑>编辑 id}}数据切换=模式 数据目标=删除>删除 @endforeach 具体地说

{{$cat->class_id} 从这里,我得到了类id,但我还需要它的名称

{{$cat->class_id->name} 然而,它没有起作用

我编辑过模型

 class Classs extends Model
{
    //
    protected $fillable = [
        'id',
        'title',

    ];

    public function section()
    {
        return $this->belongsTo('App\Section');

    }
}
剖面模型

class Section extends Model
{
    //
    protected $fillable = [
        'id',
        'title',
        'class_id',
        'user_id',

    ];


    public function classs()
    {
        return $this->hasMany('App\Classs');
    }

}

做你想做的事很容易。拉雷维尔擅长建立关系

您需要将类模型设置为用户模型上的关系。看

在用户模型中应该与此接近:

然后,当您从控制器中的数据库中提取用户时,可以直接包括关系:

$users= \App\User::with('class')->get();
现在,您的集合中为每个用户提供了相关的类模型,您可以在blade视图中根据需要直接提取名称:

我建议首先使用上面这个简单的转储进行测试,因为这样可以工作。然后,您可以尝试在后面附加不同的模型,如类别

顺便说一下,使用类作为类名可能会给您带来问题。建议在那里稍作改动


HTH

你必须声明你的关系。 在您的用户模型中

和班级模式,

所以在那之后你可以这样称呼它

public function index()
{

    $sections = Section::all();
    $classs = Classs::with('user')->get();
    $users = User::with('class')->get();


    return view('sections.index')
        ->with('sections', $sections)
        ->with('classs', $classs)
        ->with('users',$users);
}
@foreach($users->class()->get() as $class )
    {{ $class->name}}
@endforeach

@foreach($classes->users()->get() as $user )
    {{ $user->name}}
@endforeach
或者,当你看到他们时,你可以这样打电话给他们

public function index()
{

    $sections = Section::all();
    $classs = Classs::with('user')->get();
    $users = User::with('class')->get();


    return view('sections.index')
        ->with('sections', $sections)
        ->with('classs', $classs)
        ->with('users',$users);
}
@foreach($users->class()->get() as $class )
    {{ $class->name}}
@endforeach

@foreach($classes->users()->get() as $user )
    {{ $user->name}}
@endforeach
他们称之为“雄辩的关系”

只需确保您已经阅读了它们,因为文档过于清晰,无法在创纪录的时间内理解某些内容

hasOne和hasMany只是一个例子。您可以更改适用于哪种关系类型。

您所要做的就是

数据myclassid={{$cat->class_id} 与其这样,不如试试这个

数据myclassid={{\illumed\Support\Facades\DB::table'class'->where'id',$cat->class\u id->value'name'}
我假设您的表名是class,因为您希望显示类名,所以在该数据库中,类名列名将是简单的“name”,这就是为什么我将名称放在值字段中的原因。…

请与您共享laravel代码,您在其中发送此对象我已编辑了我的问题。希望可以。不,请在controller或route.php文件backendI中共享您的laravel代码。我已经尝试过了,但没有成功。在使用之前,我必须在模型中建立关系函数吗?不,我看到您已经发布了控制器,现在有了不同的设置。让我编辑我的答案来思考:是的,所有这些都取决于类模型在用户模型中是一种关系。如果您没有首先创建发布,则将不起作用。这就是我链接到文档的原因——这是第一步,创建关系
public function index()
{

    $sections = Section::all();
    $classs = Classs::with('user')->get();
    $users = User::with('class')->get();


    return view('sections.index')
        ->with('sections', $sections)
        ->with('classs', $classs)
        ->with('users',$users);
}
@foreach($users->class()->get() as $class )
    {{ $class->name}}
@endforeach

@foreach($classes->users()->get() as $user )
    {{ $user->name}}
@endforeach