samedi 26 septembre 2015

Laravel 5.1 Eloquent: How to retrieve a collection based on some conditions?

I need to filter a collection of projects based on some conditions. Hear is the scenario.

//This is part of projects table schema
  Schema::create('projects', function (Blueprint $table) {
           ...
            $table->smallInteger('source_lang_id')->index()->unsigned();
            $table->smallInteger('target_lang_id')->index()->unsigned();
           ...
        });
//This is part of translator_infos schema
Schema::create('translator_infos', function (Blueprint $table) {
          ....
            $table->smallInteger('from_l_1_id')->index()->unsigned();
            $table->smallInteger('from_l_2_id')->index()->nullable()->unsigned();
            $table->smallInteger('from_l_3_id')->index()->nullable()->unsigned();
            $table->smallInteger('from_l_4_id')->index()->nullable()->unsigned();
            $table->smallInteger('to_l_1_id')->index()->unsigned();
            $table->smallInteger('to_l_2_id')->index()->nullable()->unsigned();
            $table->smallInteger('to_l_3_id')->index()->nullable()->unsigned();
            $table->smallInteger('to_l_4_id')->index()->nullable()->unsigned();
        ....
        });

So each project has a source and target language. Translators may have 4 language pairs. What I need is that to filter the collection of projects and find projects that their source and target language match at least one of the translator language pairs and pass this collection to the view. For now the query I'm using is the following:

$projects=Project::orderBy('created_at', 'desc')->where('status_id', "=", 1)->paginate(15);

How can I add this condition to the query?



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire