如何使用Laravel查询将两个列值合并为下拉列表的选项值

时间:2018-01-29 09:21:42

标签: php laravel

我有两张桌子,例如

table_A,table_B

table_A
id username
5  kumar
6  pavan

table_B
id userid rname
1         testing
2    5    --
3         newtest
4    6    --

我想要的是

<select>
  <option value='1'>testing</option>
  <option value='2'>kumar</option>
  <option value='3'>newtest</option>
  <option value='4'>pavan</option>
</select>

如果rname为空意味着( - )所以基于table_B中的userid,从table_A获取用户名,那么我们如何使用带有pluck的laravel查询显示

2 个答案:

答案 0 :(得分:1)

使用Laravel belongsTo()关系。将两个模型设为TableATableB。在TableB模型中,与TableA建立关系,如 -

public function tableA()
{
    return $this->belongsTo(TableA::class,'userid');
}

然后在你的控制器中 -

$tableb_datas = TableB::with('tableA')->get();

return view('your_view')->with('tableb_datas', $tableb_datas);

最后在你看来 -

<select>
    @foreach($tableb_datas as $b)
          @if($b->rname!="--")
             <option value='{{$b->id}}'>{{$b->rname}}</option>
          @else
             <option value='{{$b->id}}'>{{$b->tableA->username}}</option>
          @endif
    @endforeach
</select>

答案 1 :(得分:1)

您可以使用merge功能。 merge()方法将给定的数组或集合与原始集合合并。

$first = table_A::all();
$second = table_B::all();

$finalResult = $first->merge($second);
$result = $finalResult->all();


$finalResult->each(function($record) {
    echo $record-><fieldName>.'<br />';
});

希望这能帮到你!