【问题标题】:How to get Car_type, Marks and model in controller Laravel?如何在控制器 Laravel 中获取 Car_type、Marks 和模型?
【发布时间】:2019-03-15 08:45:31
【问题描述】:

如何根据所选字段获取结果。如果选择 car_type 获取汽车,如果选择 audi 仅获取 audi 模型。示例用户选择 car_type Car ,获得标记,用户选择 Mark Audi 获得 A1,A2。用户选择宝马得到了X6、X5。 我连接所有只需要从数据库中接收数据。看我的代码。

汽车类型表:

    $table->increments('id');
    $table->string('name');
    $table->timestamps();

分数表:

$table->increments('id');
$table->string('name');
$table->timestamps();
$table->integer('car_type_id');

型号表:

    $table->increments('id');
    $table->integer('mark_id');
    $table->string('name');
    $table->timestamps();
    $table->integer('car_type_id');

车型型号:

public function marks(){
    return $this->hasMany(Mark::class);
}

标记模型:

public function car_type(){
    return $this->belongsTo(Car_type::class);
}
public function carmodels(){
    return $this->hasMany(CarModel::class);
}

车型:

public function mark(){
    return $this->belongsTo(Mark::class);
}

现在我需要在控制器中获取数据。我试试这个

$car_type = Car_type::where('id' , $id)->first();
return $car_type->marks()->get();

获取 ID 为 car_type 模型 1 的标记,但这是错误的逻辑。

【问题讨论】:

  • 但这是错误的逻辑。 为什么?您可以编写一个一次性完成所有操作的查询,但问题是什么?

标签: php mysql laravel eloquent


【解决方案1】:

你可以直接拿车标来做一次查询,而不是2次。

return Mark::where('car_type_id', $id)->get();

【讨论】:

  • 好吧,但是如何获取模型?我的函数参数中是否需要 id ?我有点困惑。当我在邮递员中测试时,我设置了 baseUrl/marks/1 为什么 1 我不知道
  • 这个问题真的很模糊。 “为什么是 1?”是什么意思。您的路线定义为/marks/{id},其中 id 是您要为其获取模型的标记 id。话虽如此,您可以在控制器方法中使用该 ID 参数作为参数。
  • 好吧,我如何获得选定标记的模型? @metei
  • 它会在另一个函数中,比如 getModels ,它有一个参数 id ? :)
  • 不一定。当您拥有Mark 对象时,您可以访问它的关系并直接获取模型。就像我之前写给你的一样。如果情况需要,您可以使用其他方法..
猜你喜欢
  • 1970-01-01
  • 2021-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-19
  • 1970-01-01
  • 2020-05-08
相关资源
最近更新 更多