Я не смог найти, как это сделать в Laravel
Я добавил свои таблицы и запрос
Возможно, я выбрал неправильный путь, я был бы очень рад, если бы вы поделились ваши предложения
table order
id pool_id durum tarih
1 1 0 2020-02-24(not start)
2 2 1 2020-02-24(started)
3 1 1 2020-02-24(started)
4 2 0 2020-02-24(not start)
table orderdetail
id order_id statu_id finish
1 2 1 1
2 2 2 0
3 3 1 1
4 3 2 1
5 3 3 0
laravel код;
$orders= Order::where('pool_id',$pool)
->leftJoin('orderdetails', function ($join) {
$join->on('orderdetails.order_id', '=', 'orders.id')
->where('durum','=','1')
->where('orderdetails.statu_id','<=','2')
->where('orderdetails.finish','=','0');
->where('durum','=','0')
->whereDate('tarih', '>', Carbon::now()->subDays(2)->toDateString())
->whereDate('tarih', '<', Carbon::now()->addDays(1)->toDateString())
->select('orders.*')
->distinct()
->get();
как это сделать, как показано ниже
if(durum == 1){
join and condition (statu_id and finish) success get only order row
}
if(durum == 0){
get only order row
}
спасибо за ваш интерес Эндрю Ларсен
порядок миграции
Schema::create('orders', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('orderno')->unique();
$table->unsignedBigInteger('pool_id');
$table->foreign('pool_id')->references('id')->on('pools')->onDelete('cascade');
$table->unsignedBigInteger('user_id');
$table->foreign('user_id')->references('id')->on('users');
$table->unsignedBigInteger('grup_id');
$table->foreign('grup_id')->references('id')->on('testgroups');
$table->string('vardiya');
$table->string('tanim')->default(0);//0: plansız-1:planlı
$table->string('durum')->default(0);//0: beklemede - 1: işlem başladı - 2: işlem bitti - 3: iptal
$table->timestamps();
});
порядок миграции детали
Schema::create('orderdetails', function (Blueprint $table) {
$table->bigIncrements('id');
$table->unsignedBigInteger('order_id');
$table->foreign('order_id')->references('id')->on('orders')->onDelete('cascade')->onDelete('cascade');
$table->unsignedBigInteger('test_id');
$table->foreign('test_id')->references('id')->on('tests');
$table->unsignedBigInteger('statu_id');
$table->foreign('statu_id')->references('id')->on('status');
$table->unsignedBigInteger('user_id');
$table->foreign('user_id')->references('id')->on('users');
$table->string('finish')->default(0);
$table->timestamps();
});
модель заказа
class Order extends Model
{
function getPool(){
return $this->belongsTo('App\Models\Pool','pool_id','id');
}
function getTestgroup(){
return $this->hasOne('App\Models\Testgroup','id','grup_id');
}
public function user()
{
return $this->belongsTo('App\User', 'user_id');
}
public function getDetay()
{
return $this->hasMany('App\Models\Orderdetail','order_id')
->where('statu_id','<=','2')->where('finish','<=','0')->first();
}
}
модель заказа детали
class Orderdetail extends Model
{
public function getOrder(){
return $this->belongsTo('App\Models\Order','order_id');
}
public function getPool(){
return $this->hasOneThrough(
'App\Models\Pool',
'App\Models\Order',
'id', // Foreign key on users table...
'id', // Foreign key on history table...
'order_id', // Local key on suppliers table...
'pool_id' // Local key on users table...
);
}
}
спасибо всем