use*_*257 6 php mysql relational-database laravel
我有两个表,帖子表和类别表。
每个帖子只有一个类别。
我想做什么
将每个帖子与一个类别 ID 连接起来,无需外键。
为什么我要这样做
因为我不想在每个帖子中复制类别词,所以我只想复制类别 ID。
PostsController.php 代码
$posts = Post::orderBy('id', 'DESC') -> limit(16) -> get();
@foreach($posts as $post)
dd($post -> categories() -> cat);
@endforeach
Run Code Online (Sandbox Code Playgroud)
Posts.php 模型代码
class Post extends Model
{
public function category() {
return $this->hasOne('App\Category');
}
}
Run Code Online (Sandbox Code Playgroud)
问题
当我在类别表中没有外键时,我收到一个错误,要求我输入外键。
没有必要有 FK 关系。如果您有办法告诉 Laravel 如何查找相关记录,它可以为您完成。例如
class Post extends Model
{
public function category() {
return $this->hasOne('App\Category','id','category_id');
}
}
Run Code Online (Sandbox Code Playgroud)
上面会告诉 Laravel 当你在 中请求category属性时post,它应该category_id从 post 表中获取并id在 category 表中查找。如果两者匹配,它将为您提供匹配的类别。
关系应该是belongsTo():
public function category() {
return $this->belongsTo('App\Category');
}
Run Code Online (Sandbox Code Playgroud)
无论如何,该posts表应该能够category_id使其工作,但是您可以在没有外键约束的情况下使用它。
| 归档时间: |
|
| 查看次数: |
7357 次 |
| 最近记录: |