如何在Laravel中选择外国钥匙值



我有两个表 car_category 具有字段 - ID,type 。另一个名为车辆具有字段的表 - C_ID (FK REFES CAR> CAR -ID)。现在,我想显示fk(c_id)值,即 car -Type。我以下是模型中的代码,

class Car extends Model
{
    protected $guarded = [];
    protected $table = 'car_category';
    public function vehicles()
    {
        return $this->hasMany('Vehicle');
    }
}

车辆模型,

class Vehicle extends Model
{
    protected $guarded = [];
    protected $table = 'vehicles';
    public function cars()
    {
        return $this->belongsTo('Car');
    }
}

我的查询是什么?我尝试了此代码,结果错误。

$vehicles = "SELECT cars.cartype,vehicles.model FROM cars,vehicles 
             WHERE cars.id = vehicles.c_id";

我该如何实现?有人可以帮我吗?

尝试此

class Car extends Model  
{
protected $guarded = [];
protected $table = 'car_category';
 public function vehicles()
 {
   return $this->hasMany(Vehicle::class, 'c_id');
 }
}

车辆模型

 class Vehicle extends Model
 {
  protected $guarded = [];
  protected $table = 'vehicles';
  public function cars()
  {
    return $this->belongsTo(Car::class, 'c_id');
  }
 }

雄辩地根据模型名称确定关系的外键。在这种情况下,自动假定汽车模型具有CAR_ID外键。如果您想覆盖此公约,则可以将第二个论点传递给该方法

https://laravel.com/docs/5.5/eloquent-relationships#one-to-one

要获取汽车以及他们的车辆信息,您可以使用急切的加载来进行查询

$result = Car::with('vehicles')->get();

获取Car及其Vehicle信息,您可以使用急切的加载

进行查询
$result = Car::with('vehicles')->get();

您将类名称指定为字符串文字而未指定FQN的另一个更正,应使用完全合格的名称

定义模型中的关系

汽车模型

class Car extends Model
{
    protected $guarded = [];
    protected $table = 'car_category';
    public function vehicles()
    {
        return $this->hasMany(AppModelsVehicle::class);
    }
}

车辆模型

class Vehicle extends Model
{
    protected $guarded = [];
    protected $table = 'vehicles';
    public function cars()
    {
        return $this->belongsTo(AppModelsCar::class);
    }
}

class car变为 class Car

之后,您可以使用Car::first()选择相关的表数据,可以在Car::first()->vehicles

中找到

您还可以在模型上添加一个()方法,如果您有多个记录,请使用foreach()

In Model,
 class Vehicle extends Model
 {
protected $guarded = [];
protected $table = 'vehicles';
 public function cars()
{
 return $this->belongsTo(Car::class, 'c_id');
}
}

在控制器中,

    $vehicles = Vehicle::all();
    return view('vehicles.vehicle',['vehicles'=>$vehicles]);

最新更新