Как исключить некоторые конкретные объекты в Laravel

У меня есть две таблицы в моем приложении Laravel. 1 - это коллекция, а второй - q_collections. Коллекция таблицы содержит несколько объектов. У q_collections есть много к одному полю для коллекций, это означает, что таблица q_collections имеет идентификатор объектов коллекции как c_id. Я хочу исключить объекты из таблицы коллекции, которые связаны с q_collections. Есть поле sd_item_id что характерно для обеих таблиц. Я хочу отфильтровать таблицы, используя это sd_item_id получить уникальные записи или те записи, которые недоступны в q_collections.

Столы похожи

//Collection
class CreateCollection extends Migration {
public function up()
{
    Schema::create('collection', function (Blueprint $table) {
        $table->increments('id')->unsigned();
        $table->string('name');
        $table->timestamps();

    });
}

public function down()
{
    Schema::drop('collection');

}
}
//q_collections
class CreateQCollections extends Migration {
public function up()
{
    Schema::create('q_collections', function(Blueprint $table) {
    $table->increments('id');
    $table->integer('sd_item_id')->unsigned();
            $table->integer('qc_id')->unsigned();     // question collection id 
            $table->timestamps();
    $table->foreign('qc_id')->references('id')->on('collection');
    });
}

public function down()
{
    Schema::drop('q_collection');
}
}

1 ответ

Решение

Для этого вы можете использовать Laravel Query Builder.

$collection_count=DB::table('q_collections')->where('sd_item_id','=',$item_id)->count();  
if($collection_count){  
    $sc=DB::table('q_collections')->where('sd_item_id','=',$item_id)->lists('qc_id');
}
else{
    $sc=array(0);
}
$collections=DB::table('collection')->whereNotIn('id',$sc)->get();
return Response::json($collections);

Могут быть и другие способы выполнить эту задачу. Я также новичок в laravel, поэтому я также говорю, что этот код идеален или нет, но он, безусловно, будет работать.

Другие вопросы по тегам