我有兴趣为用户提供将文章添加到他们创建的自定义列表的选项。 (例如youtube的播放列表功能)。
我想知道如何展示'已检查过'列表旁边的复选框,如果文章中已存在该文章,那么他们不会将其添加两次。
我的数据库表:
list : | id | person_id | list_name | list_desc
list_ref : | id | list_id | article_id
我显示列表的代码。
$lists = Lists::where('person_id', Auth::user()->person_id)->get();
@foreach($lists as $list)
<input type="checkbox" id="available_list" value="{{ $list->id }}">
{{ $list->list_name }}
@endforeach
如果有人可以帮我理解查询两个表的代码,看看列表是否已经使用 || 列表可用。
答案 0 :(得分:1)
您可以将原始表达式与左连接结合使用,如下所示:
$lists = DB::table('list')->
leftJoin('list_ref', 'list_ref.list_id', '=', 'list.id')->
select(DB::raw('list.*, IF(list_ref.list_id = list.id, 1, 0) used'))->
where('person_id', Auth::user()->person_id)->
get();
以上使用连接来确定哪些列表行在list_ref
表中具有相应的键。结果将包含一个名为used
的字段,该字段将告知该条目是否在list_ref
表中有引用。
您现在应该能够生成如下形式:
@foreach($lists as $list)
<input type="checkbox" id="available_list" value="{{ $list->id }}" {{ $list->used ? "CHECKED" : "" }}>
{{ $list->list_name }}
@endforeach
答案 1 :(得分:0)
第一个箱子类,这里是设施的例子
class HotelFacilities
{
public $facility_id;
public $facility;
public $status;
}
获取所有数据
$facilities = Facility::all();
获取用户相关数据
$user_facilities = UserFacility::where('user_id', 3)->get();
//Here you add status
$array_hotel_facility = array();
for($i=0; $i<count($facilities); $i++)
{
$obj_hotel_facilities = new HotelFacilities;
$obj_hotel_facilities->facility_id = $facilities[$i]['id'];
$obj_hotel_facilities->facility = $facilities[$i]['facility'];
$obj_hotel_facilities->status = false;
for($j=0; $j<count($user_facilities); $j++)
{
if($user_facilities[$j]->facility_id == $facilities[$i]->id)
{
$obj_hotel_facilities->status = true;
}
}
//Pass this array to view
$array_hotel_facility[$i] = $obj_hotel_facilities;
}
//Pass to view
return view('extranet.view_facilities')->with('facilities', $array_hotel_facility);
//Generate UI like this
@foreach($facilities as $facility)
<div class="form-group col-md-3">
<div class="form-group">
<label>
<input type="checkbox" class="minimal" name="facilities[]" value="{{ $facility->facility_id }}" <?php if($facility->status){echo "checked";} ?>>
{{ $facility->facility }}
</label>
</div>
</div>
@endforeach