laravel从联接表中选择一列
我被能言善辩的拉威尔困住了 任何帮助都将受到感谢 设置: 员额表laravel从联接表中选择一列,laravel,join,eloquent,inner-join,Laravel,Join,Eloquent,Inner Join,我被能言善辩的拉威尔困住了 任何帮助都将受到感谢 设置: 员额表 id | name | desc... 照片/表格 id | post_id | image_path posts模型 public function photo() { return $this->hasOne('App\Photo'); } 照片模型 public function posts() { return $this->belongsTo('App\Flyer');
id | name | desc...
照片/表格
id | post_id | image_path
posts模型
public function photo()
{
return $this->hasOne('App\Photo');
}
照片模型
public function posts()
{
return $this->belongsTo('App\Flyer');
}
我希望获取所有帖子,并且只获取属于每个帖子的一个图像,因为每个帖子可以有更多的图像。
无法使用Elount或db builder创建此项
编辑:再问一个问题:
以及如何仅获取所需的列,如posts\u table.name和photos\u table.image\u path为了方便使用雄辩的ORM,请使用posts make it post等单数形式创建模型名称。然后从数据库中将列id重命名为post\u id。为别人做这件事。 现在看看你的模型 addprotected$primaryKey=post_id; 为别人做这件事。使用hasOne或HasMany others方法连接表会让您头疼。它会为关系生成主键和外键asmodelname\u id(用于post model post\u id)。 现在写下你的关系,通过post获取照片 后置模型 } 关系完成: 在你的控制器中,要想获得带有照片的帖子,你必须写
$posts=Post::with('photos')->get();
打印r$帖子;退出//检查它是否正常工作
它会给你每个帖子的所有照片
必须使用嵌套循环来查看一个或多个循环。
像
如果$posts->photos{
foreach$posts->photos as$sn=>$photo
}
请尝试一下这个概念,它可能会帮助你:D从这篇文章中,我找到了一个答案: 我必须在原始sql中完成这项工作,也许下一个任务就是重构到雄辩的状态
SELECT posts.id, image_path
FROM (SELECT * FROM posts) posts
LEFT JOIN (SELECT * FROM photos_table GROUP BY posts_id) photos_table
ON posts.id = posts_id
为什么照片模型中的关系属于传单的可能重复?那不应该是邮局吗?另外,如果一篇文章可以有多张照片,你应该在文章模型中使用hasMany而不是hasOne。你能用模型文件中的更多信息更新你的问题吗,比如文件名和类名?我一到家就会试试,tnx,以及如何在每篇文章中只获得一张照片?
SELECT posts.id, image_path
FROM (SELECT * FROM posts) posts
LEFT JOIN (SELECT * FROM photos_table GROUP BY posts_id) photos_table
ON posts.id = posts_id