Laravel 访问 blade 中的外键 table 列

Laravel access foreign key table column in blade

到目前为止,我如何使用 blade 中的外键访问 table 列?我有这个,但它不起作用。

询价型号/关系

public function client()
{
    return $this->belongsTo(Client::class);
}
public function device()
{
    return $this->belongsTo(Device::class);
}

客户端模型

public function inquiry()
{
    return $this->hasMany(Inquiry::class);
}
public function devices()
{
    return $this->hasMany(Device::class);
}

设备型号

public function inquiry()
{
    return $this->hasMany(Inquiry::class);
}

控制器

public function index()
{
    $inquiries = Inquiry::all();
    return view('stream.index', compact('inquiries'));
}

查看

@foreach($inquiries as $inquiryKey => $inquiryValue)
    <tr>
        // stream id is the foreign that table has a column with names ...
        <th scope="row">{{ $inquiryValue->stream_id }}</th>        // works
        <th scope="row">{{ $inquiryValue->stream_id->name }}</th>  // does not work -> trying to get property of none object

您无法访问 stream_id 的属性 name,它只是一个整数,您可以尝试 $inquiryValue->client->name 或者我认为 $inquiryValue->client->first()->name

一定要让 Laravel 知道 stream_id 是用于您的关系的密钥。

你应该试试这个例子:

更新答案

控制器

public function index()
{
    $inquiries = Inquiry::all();
    return view('stream.index', compact('inquiries'));
}

查看文件

@foreach($inquiries as $inquiryKey => $inquiryValue)
    <tr>
        // stream id is the foreign that table has a column with names ...
        <th scope="row">{{ $inquiryValue->client->name }}</th>        // works
    </tr
@endforeach

如果你把它命名为 stream_id 比我认为你有一个 table 名字更好 streams,如果您想从查询中获取客户数据,那么您应该在 inquiry table 中包含 client_id 列,设备相同,将 device_id 列添加到您的 inquiry table

获取方式: @foreach($inquiries as $inquiryKey => $inquiryValue) {{$inquiryValue->client->name}} {{$inquiryValue->device->name}} @endforeach