laravel eloquent загружается вложенным состоянием

У меня есть 2 таблицы, которые используют готовую загрузку и затем используют вложенное условие в этой нетерпеливой загрузке:

//migration for lead table
public function up()
{
Schema::create('leads', function(Blueprint $table)
{
$table->engine = 'InnoDB';
$table->increments('id');
$table->string('first_name',255);
$table->string('surname',255);
});

Schema::table('leads', function($table)
{
$table->foreign('create_by')->references('id')->on('employees')->onDelete('cascade');
});
}

//lead for lead detail emails
public function up()
{
Schema::create('lead_detail_emails', function(Blueprint $table)
{
$table->engine = 'InnoDB';
$table->increments('id');
$table->integer('lead_id')->unsigned();
$table->string('email',255);
});

Schema::table('lead_detail_emails',function($table)
{
$table->foreign('lead_id')->references('id')->on('leads')->onDelete('cascade');
});
}

//leads model
class LeadsModel extends Eloquent
{
protected $table = 'leads';

public function emails()
{
return $this->hasMany('LeadDetailEmailsModel','lead_id','id');
}
}

//lead detail emails
class LeadDetailEmail extends Eloquent
{
protected $table = 'lead_detail_email';

public function lead()
{
return $this->belongsTo('LeadsModel');
}
}

Когда я пытаюсь добавить вложенное условие к нетерпеливой загрузке, скажем,

$qry = LeadsModel::with(
array
(
'emails' => function($qr)
{
$qr->orWhere('email','like','%testname%');
}
));

$res = $qry->get();

dd($res);

Он возвращает все записи в начале, я попытался объединить электронные письма и $ qry с помощью

->join('lead_detail_emails','lead_detail_emails.lead_id','=','leads.id');

но это не работает так же хорошо. можно узнать в чем проблема в коде?

обновить вопрос

Как я могу получить лиды, выполняя вложенные условия на электронные письма?

4

Решение

$qry = LeadsModel::with(array('emails' => function ($q) use ($input) {
$q->where('email','like',"%{$input}%");
}))->whereHas('emails', function ($q) use ($input) {
$q->where('email','like',"%{$input}%");
});

$res = $qry->get();
11

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]