我有两个表 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]);