从hasOne关系中获取2条记录laravel 5.6

时间:2018-06-22 12:39:38

标签: php laravel

这是我设定关系的模型

package com.garnett.mathspeeder;

import java.util.Random;

public class QuestionModel {
    public QuestionModel(String questionString, String answer) {
        QuestionString = questionString;
        Answer = answer;
    }

    public String getQuestionString() {
        return QuestionString;
    }

    public void setQuestionString(String questionString) {
        QuestionString = questionString;
    }

    public String getAnswer() {
        return Answer;
    }

    public void setAnswer(String answer) {
        Answer = answer;
    }

    private String QuestionString;
    private String Answer;

}

这里是控制器 我在这里有两个关系,我的发票产品销售状况很好,但是$ clients显示了2行

public function user() {
    return $this->hasOne('App\Client','id','client_id');
}

和视图

$clients = Invoice::with('user')->get();
$invoice_id = $invoice->id;
$invoices = Invoice::with('products')->where('id', '=', $invoice_id)->firstOrFail();
return view('admin.invoices.show', compact('invoice','invoices'),compact('clients'));

现在,当我访问视图时,我得到2个带有相同客户端名称(标题)值的td标签,知道我做错了什么吗? 这是

的dd
@foreach($clients as $client)
   <td>{{ $client->user->title ?? 'بدون مشتری' }}</td>
@endforeach

1 个答案:

答案 0 :(得分:0)

问题是我正在遍历该模型可能发生的所有关系,所以我只是做了一个简单的过滤器,该过滤器是我的关系的一个are子句,并设置了发票的ID以仅携带我的属性正如我在文档中看到的

        $clients = Invoice::with('user')->where('id','=',$invoice_id)->get();