时间:2016-12-09 08:52:56

标签: php laravel eloquent

我已经在线使用了一些指南,通过使用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。 感谢

2 个答案:

答案 0 :(得分:0)

试试这个:

return view('customers.show', compact('company', 'customers'));

我不确定你想要显示哪个字段以及哪些字段无效。

编辑:如果您的客户模型中有公司的belongsTo关系商店,您可以尝试这样做:

$customer->company->name

答案 1 :(得分:0)

在过去的一天左右在黑暗中徘徊之后,我想我会回来看看我是否无法帮助那些跟随的人找到更清晰的道路。

我会使用我自己的代码,所以还有另一个例子,那个假想的人在那里漂浮。

我的情况:我有一个具有&#34;状态的工作模型&#34;专栏,但它只是一个id。这并不是很有用。

  • 工作

    • 状态
  • JobStatus

    • STATUS_ID
    • 标题
    • 描述


首先:查找表
带有额外信息的表格。如果你不确定,这个模型不需要做任何事情。只是存在并像它应该的那样工作。

<?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