2017-08-11 17 views
0

如何使用刀片中的外键访问表列中的内容到目前为止,我拥有此功能,但无法使用。Laravel访问刀片中的外键表列

询价型号/关系

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 
+1

的stream_id是表中的字段? –

+0

你只是通过foreach像$查询 - >客户端然后你可以使用客户端表数据 –

+0

@AddWebSolutionPvtLtd你能给我一个示例代码请 – junikear

回答

1

您不能访问属性namestream_id,它只是一个整数,你可以尝试为$inquiryValue->client->name或我认为,$inquiryValue->client->first()->name

一定要让Laravel知道stream_id是使用的密钥为你的关系。

+0

我认为这工作'$ inquiryValue-> client- > name'我会进一步检查并可能稍后接受你的回答 – junikear

+0

Inquiry :: all中的每个对象都是一个Inquiry模型,因此让你使用'client'和'device'关系,因此,执行'$ inquiryValue-> client'返回与之相关的客户端,您现在可以访问其名称。您还应该让Laravel知道您在关系中使用stream_id作为您的foreign_key。 – Wreigh

0

你应该用这个例子类似尝试:

更新答案

控制器

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 
+0

没有工作,因此我不明白'Inquiry :: with('client') - > get();'返回与Inquiry :: all();'一样的错误:'property [client]不存在这个集合实例' – junikear

+0

@junikear请给我名称字段的表名称 –

+0

表名称是客户端,询问,设备 – junikear

0

,如果你的名字的stream_id比我认为这是更好u有一个表名,如果u想从查询获得客户端的数据,妳比应该有查询表CLIENT_ID列,同为设备添加DEVICE_ID列到你的查询

如何访问: @foreach($inquiries as $inquiryKey => $inquiryValue) {{$inquiryValue->client->name}} {{$inquiryValue->device->name}} @endforeach