Php 如何从其他表中获取所需的列
有两个由PHPMyAdmin创建的表products和categories。 在products表中,它有一个列名prd_category,该列名具有名为cat_id(categories表的主键)的表类别外键 我在拉雷维尔是个新手 我想从另一个表返回具有类别名称(cat_名称)的产品表中的所有数据 //这是我的控制器Php 如何从其他表中获取所需的列,php,mysql,laravel,laravel-8,Php,Mysql,Laravel,Laravel 8,有两个由PHPMyAdmin创建的表products和categories。 在products表中,它有一个列名prd_category,该列名具有名为cat_id(categories表的主键)的表类别外键 我在拉雷维尔是个新手 我想从另一个表返回具有类别名称(cat_名称)的产品表中的所有数据 //这是我的控制器 use App\Models\product; class items extends Controller { public function sample(){
use App\Models\product;
class items extends Controller
{
public function sample(){
return product::all();
}
}
//路线
Route::get('/',[items::class,'sample']);
//产品表的模型
class product extends Model
{
use HasFactory;
function category(){
return $this->hasOne('App\Models\category','cat_id','prd_id');
}
}
//类别模型
class category extends Model
{
protected $table='categories';
use HasFactory;
}
请提前帮助和感谢。您可以使用以下代码:
$products = product::whereHas('category',function($q)use($cat_name){
$q->where('name',$cat_name)
})->get();
或:
你确定一对多关系是正确的吗?如果产品可以属于多个类别,则需要使用多对多关系。此外,如果其他内容属于类别,则应使用多对多多态关系。但让我们选择一对多 首先,Product.php中的关系函数看起来不正确。我认为产品应该属于一个类别
function category(){
return $this->belongsTo('App\Models\Category','cust_name','name');
}
然后需要在Category.php中定义反向关系
function products(){
return $this->hasMany('App\Models\Product','cust_name','name');
}
正确定义关系后,只需在控制器中获取数据:
use App\Models\Category
...
Category::with('products')->get();
刀片中:
{{ $cat->products->cat_name; }}
you can use relationship with forign key like pro_id
function category(){
return $this->belongsTo('App\Models\Category','pro_id');
}
function products(){
return $this->hasMany('App\Models\Product','id');
}
$cat = Category::with('products')->all();
{{ $cat->products->cat_name; }}