我在数据库上有表:
订单
--id
--customer_id
客户
--id
--name
--country_id
国家
--id
--name
以及下一个雄辩的模特:
Order.php:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Order extends Model
{
/**
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function customer()
{
return $this->belongsTo('App\Models\Customer');
}
}
客户:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Customer extends Model
{
/**
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function country()
{
return $this->belongsTo('App\Models\Country');
}
}
国家/地区:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Country extends Model
{
}
现在,我需要通过一个sql查询获得所有客户国家名称(如“ Uk”)的订单。我该怎么办?
答案 0 :(得分:1)
以下应该可以解决问题:
Order::whereHas('customer.country', function($innerQuery) {
$innerQuery->where('countries.name', 'LIKE', 'Uk');
})->get();
答案 1 :(得分:0)
我不确定这是否是一种好的思考方式,但也许我有所帮助
$orders = App\Order::whereHas('customer.country', function ($query) {
$query->where('name', 'like', 'UK%');
})->get();