我有一张带有几个旗帜的桌子:
Schema::create('foo', function(Blueprint $table)
{
$table->increments('id')->unsigned();
$table->string('field_1', 10);
$table->string('field_2', 10);
$table->boolean('flag_1')->default(0);
$table->boolean('flag_2')->default(0);
$table->boolean('flag_3')->default(0);
$table->timestamps();
});
我有一种使用laravel关系无法实现的复杂查询,(BelongsTo
,BelongsToMany
等...)。所以我在Foo's Model
里面这样做了:
public function myFunc($filterOne, $filterTwo)
{
SELECT
table1.id, table1.name,
table2.id, table2.week_day,
table3.id,
table4.date
FROM table1
LEFT JOIN table2 ON table2.id = table1.table2_id
LEFT JOIN table3 ON table2.table3_id = table3.id
LEFT JOIN table4 ON table3.id = table4.table3_id
WHERE table1.cod_field='.$filterOne.' AND table3.date = "'.$filterTwo . '"
}
我需要的是:
每当其中一个标志为真时,我需要通过更改图标的颜色来引起用户的注意(这是我发现的最好的方法)。
由于我使用的是QueryBuilder
而不是Eloquent
所以我无法使用Laravel的Accessors
。
以下是包含图标的HTML:
@foreach($obj->myFunc($obj->field1, $obj->field2) AS $disc)
<i class="{{ $disc->flag_1 }} flag fa fa-check fa-lg"></i>
<i class="{{ $disc->flag_2 }} flag fa fa-camera-retro fa-lg"></i>
@endforeach
我想写一个CSS类,而不是写标志的值(0/1) 这样我可以改变它的颜色来引起用户的注意。但是怎么样?
Obs1:我知道我可以做出更好的数据库关系,但不幸的是 我不能参与这个项目。