我已经在线使用了一些指南,通过使用pluck函数填充数据库中的下拉框。这适用于创建,但在查看表并显示记录时,它只显示ID而不是它引用的表中的查找值。我已经尝试将数据返回到customers.show并更改视图但无法使其工作。
控制器:
public function show($id)
{
$company = Companies::find($id);
$customers = $this->customersRepository->findWithoutFail($id);
if (empty($customers)) {
Flash::error('Customers not found');
return redirect(route('customers.index'));
}
return view('customers.show')
->with('customers', $customers)
->with('company', $company);
}
然后是观点:
<!-- Company Id Field -->
<div class="form-group">
{!! Form::label('company_id', 'Company Id:') !!}
<p>{!! $company->name !!}</p>
</div>
我也相信我在模型中设置了正确的关系:
public function company()
{
return $this->belongsTo(\App\Models\Company::class);
}
我认为$company = Companies::find($id)
我想要找到字段customers.company_id,这是错误的。如果我手动输入公司表中记录的ID,例如1它正确地返回数据。
在customers表中有一列company_id,它被约束到公司表列ID。 感谢
答案 0 :(得分:0)
试试这个:
return view('customers.show', compact('company', 'customers'));
我不确定你想要显示哪个字段以及哪些字段无效。
编辑:如果您的客户模型中有公司的belongsTo关系商店,您可以尝试这样做:
$customer->company->name
答案 1 :(得分:0)
在过去的一天左右在黑暗中徘徊之后,我想我会回来看看我是否无法帮助那些跟随的人找到更清晰的道路。
我会使用我自己的代码,所以还有另一个例子,那个假想的人在那里漂浮。
我的情况:我有一个具有&#34;状态的工作模型&#34;专栏,但它只是一个id。这并不是很有用。
工作
JobStatus
首先:查找表
带有额外信息的表格。如果你不确定,这个模型不需要做任何事情。只是存在并像它应该的那样工作。
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class JobStatus extends Model
{
protected $primarykey = "status_id"; //Because my key is not Laravel-standard
}
第二名:&#34;家长&#34;表
&#39;追加&#39;和&#39; get__Attribute&#39;是Laravel中更隐藏的好东西,它可以自动扩展您的模型查询。
真正让我失望的是我认为&#34;属于&#34;属于&#34;应该在查找表中。
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Job extends Model {
// . . .
//Can be anything - but 'status' was taken
protected $appends = ['job_status'];
//Needs to be camel case of $appends
public function getJobStatusAttribute() {
return $this->status()->first();
}
public function status() {
return $this->belongsTo('App\JobStatus', 'status', 'status_id'); // Again, not the Laravel-iest keys
}
第三:控制器
这里没有任何相关内容,但我想全面了解正在发生的事情。只是对模型的正常调用(具有专门的功能)。
<?php
//. . . .
class AccountController extends Controller {
public function loadaccount() {
$job = Job::currentjob();
return view('account/account', [
'job' => $job,
]);
}
最后,视图
// account.blade.php
@section('content')
@if($job)
Progress Report for "{{ $job->title }}"<br/>
Status: {{ $job->job_status->title }}<br/>
{{ $job->job_status->description }}<br/>
</div>
@endif
// . . . . //
希望这会有所帮助。
(值得注意的是,为了诚实,这个答案基本上归功于这个家伙:)
https://laracasts.com/discuss/channels/laravel/need-to-append-a-field-from-a-lookup-table-in-my-result-collection