Php laravel 4中的一对多关系帮助

Php laravel 4中的一对多关系帮助,php,mysql,database,laravel,foreign-key-relationship,Php,Mysql,Database,Laravel,Foreign Key Relationship,我试图在类别和产品之间创建一个关系,但不知何故,我无法使用类别连接到产品表并打印出产品名称,而是获取类别名称 在我的数据库中 在产品表中 在类别表中 Product.php内部模型文件夹 Category.php内部模型文件夹 控制器文件夹中的ProfileController.php } user.blade.php内部概要文件文件夹,该文件夹位于视图文件夹内 但后来我犯了这个错误 ErrorException Invalid argument supplied for foreach() (

我试图在类别和产品之间创建一个关系,但不知何故,我无法使用类别连接到产品表并打印出产品名称,而是获取类别名称

在我的数据库中 在产品表中 在类别表中 Product.php内部模型文件夹 Category.php内部模型文件夹 控制器文件夹中的ProfileController.php }

user.blade.php内部概要文件文件夹,该文件夹位于视图文件夹内 但后来我犯了这个错误

ErrorException
Invalid argument supplied for foreach() (View: J:\wamp\www\test\app\views\profile\user.blade.php)
所以我尝试了
var\u dump($products)
并实现了
$products
给出了
category1
这是类别的名称,但我想要的是打印所有类别id为1的产品的名称

谁能帮我一下吗?是我把关系搞砸了还是我对代码做了傻事?

在你的控制器中:

$category = Category::find(1);
$products = $category->product;
$category = Category::with('product')->where('id', 1)->first();
然后,您可以在模板中使用:

@foreach ($products as $product)
    {{ $product->name }}
@endforeach
更好的是,您可以使用“快速加载”,而不用手动分配产品:

控制器:

$category = Category::find(1);
$products = $category->product;
$category = Category::with('product')->where('id', 1)->first();
模板:

@foreach ($category->product as $product)
    {{ $product->name }}
@endforeach
PS:请在此处阅读有关快速加载的更多信息:
为了防止可怕的N+1查询问题

您的类别是否可以包含多个产品,您的一个产品是否可以包含多个类别?这部分对我来说没有意义:$category=category::find(1)$产品=类别::查找(1)->名称;它不应该是$products=$category->product?请在一对多关系中使用复数btw(产品)kevin>我想我在需要的地方使用复数,我错过了什么吗?请你指出一下好吗?这样我就可以换了。谢谢^ ^您的产品关系是基于hasMany设计的$类别->产品在一个类别很可能有多个产品的情况下是没有意义的,使用复数可以让以后更容易理解(所以$category->产品在你的情况下)谢谢kevin,我对laravel很新,我在youtube上看了关于关系的教程,这是使用的
$post=post::find(1)
$comments=Post::find(1)->comment
我相信我误解了视频如果可能的话,你能告诉我
$comments=Post::find(1)->comment中的
注释是什么吗意味着什么?我认为
comment
是该专栏的名称,但似乎不是。我认为我应该坚持使用一种方法,在尝试其他方法之前更好地了解它,尽管急切加载似乎更容易:PLaravel很容易学习,有点难掌握,但在我看来完全值得深入研究。急切加载是一种功能,特别是在大型数据驱动的应用程序中,当涉及到性能和可用性时,它将节省您的时间。您在教程中可能看到的->注释与您的Category::find(1)->product相同。它根据给定的关系(belongsTo、hasOne等)获取所有记录。它既不是…也不是…它是您用于声明关系的方法的名称。例如,您有一个名为“products”的方法,它有:return$this->hasMany('Product');。Category::find(1)->products意味着根据您提供的关系,使用“products”方法查找属于此模型的所有产品。
@foreach($products as $product)
    {{$product}}
@endforeach
ErrorException
Invalid argument supplied for foreach() (View: J:\wamp\www\test\app\views\profile\user.blade.php)
$category = Category::find(1);
$products = $category->product;
@foreach ($products as $product)
    {{ $product->name }}
@endforeach
$category = Category::with('product')->where('id', 1)->first();
@foreach ($category->product as $product)
    {{ $product->name }}
@endforeach