如何使用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 中的用户 ID,从 table_A 获取用户名,那么我们如何使用 Laravel 查询和 pluck 显示

使用 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>

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

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

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

希望对您有所帮助!

最新更新