我有这样的查询
SELECT * FROM 'discussions' INNER JOIN comments ON comments.commentable_id = discussions.id WHERE discussions.user_id = 1 ORDER BY comments.id DESC
如何在laravel模型中创建关系
不适用于这样的查询构建器
DB::table('discussions')
->join('comments', 'comments.commentable_id', '=', 'discussions.id')
->where('discussions.user_id', '=', 1)
->orderBy('comments.id', 'DESC')
->get();```
答案 0 :(得分:0)
首先,您需要知道关系的类型。
One:One
,One:Many
,Many:Many
,Many:One
之后,您可以查看documentation
您可以通过在终端中调用php artisan make:model <name>
或手动创建模型来创建2个模型。
之后,您只要完成任何文档指示的操作即可。
假设您的一对多讨论中有很多评论,如果非常规命名请在第二个参数中指定foreign_key,这一点很重要。
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Discussion extends Model
{
/**
* Get the comments for the discussions post.
*/
public function comments()
{
// Watch the foreign_key in this instance 'commentable_id'
return $this->hasMany(Comment::class, 'commentable_id');
}
}
之后,您可以拨打类似的电话
$comments = Discussion::where('user_id', 1)->first()->comments
获取属于该讨论的所有评论
我不想成为一个混蛋,但是documentation确实是一个极好的信息来源。我建议您在开始开发旅程之前先阅读所有内容。