我有一个关于Eloquent如何为以下内容生成SQL的noob问题。
DB:
客户表:
群组表:
我在客户模型中有以下代码:
public function groups()
{
return $this->hasMany(Group::class, 'fk_customer_id');
}
我正在尝试让所有群组(在上面的群组功能中),以后我可以将群组缩小到特定的客户范围。
上面的代码生成以下SQL(结果为空结果集,通过查看SQL可以理解)。我不知道为什么where子句(参见下面的SQL)生成,没有多大意义。
select * from `group` where `group`.`fk_customer_id` is null and `group`.`fk_customer_id` is not null limit 1
我希望生成以下SQL:
select * from `group`
另外,如何生成以下SQL(如果我需要根据customer_id选择组,我相信我需要以某种方式添加一些where子句)
select * from `group` where `group`.`fk_customer_id`= SOME_VALUE
谢谢!
---客户模式
<?php
namespace App;
use App\Role;
use Illuminate\Support\Facades\Log;
use Illuminate\Database\Eloquent\Model;
class Customer extends Model
{
/**
* Get ALL groups for the customer.
*/
public function groups()
{
return $this->hasMany(Group::class, 'fk_customer_id');
}
/**
* Get ONE group for the customer.
*/
public function group($groupId)
{
return $this->hasMany(Group::class, 'fk_customer_id')->where('id', $groupId);
}
/**
* The table associated with the model.
*
* @var string
*/
protected $table = 'customer';
}
群组模型
<?php
namespace App;
use App\Group;
use App\Customer;
use Illuminate\Database\Eloquent\Model;
class Group extends Model
{
/**
* Get ONE customer for the group.
*/
public function customer()
{
return $this->belongsTo(Customer::class, 'fk_customer_id');
}
/**
* Get ONE directory configuration for the group.
*/
public function directoryConfiguration()
{
return $this->belongsTo(DirectoryConfiguration::class, 'fk_directory_configuration_id');
}
/**
* Get ONE user for the group.
*/
public function user($userId)
{
return $this->hasMany(User::class, 'fk_role_id')->where('user_id', $userId);
}
/**
* Get ALL user for the group.
*/
public function users()
{
return $this->hasMany(User::class, 'fk_role_id');
}
/**
* The table associated with the model.
*
* @var string
*/
protected $table = 'group';
}