如何使用这样的SQL查询创建laravel关系模型

时间:2020-10-22 09:36:22

标签: php laravel eloquent-relationship

我有这样的查询

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();```

1 个答案:

答案 0 :(得分:0)

首先,您需要知道关系的类型。

One:OneOne:ManyMany:ManyMany: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确实是一个极好的信息来源。我建议您在开始开发旅程之前先阅读所有内容。

相关问题