php - 有人能解释一下 Laravel 关系是如何运作的吗?

标签 php laravel

当我保存帖子时,它会保存发布该帖子的用户的 ID。 太棒了,但我不明白怎么做。

后置 Controller

<?php

   namespace App\Http\Controllers;
   use Illuminate\Http\Request;
   use App\Post;

   class PostController extends Controller
   {
      public function postCreatePost(Request $request)
      {

        $post = new Post();
        $post->body = $request['body'];
        $request->user()->posts()->save($post); //i cant understand this line
        return redirect()->route('dashboard');
      }
   }

?>

用户模型

<?php

   namespace App;

   use Illuminate\Contracts\Auth\Authenticatable;
   use Illuminate\Database\Eloquent\Model;

   class User extends Model implements Authenticatable
   {
      use \Illuminate\Auth\Authenticatable;

      public function posts()
      {
         return $this->hasMany('App\Post'); // ?
      }
   }

发布模型

<?php

  namespace App;

  use Illuminate\Database\Eloquent\Model;

  class Post extends Model
  {
    public function user()
    {
       return $this->belongsTo('App\User'); // ?
    }
 } 

我不明白属于和有很多关系是如何工作的。 如果有人能给我解释一下,我将不胜感激。

最佳答案

  • 在本例中,hasMany 表示它将在 user_id 上找到many 行包含用户 id posts 表中的 列。

  • belongsTo 只是意味着它将在 users 中查找具有 iduser帖子相关行上的user_id列相匹配的表。

最后,$request->user()->posts()->save($post);:

  • 获取请求
  • 从请求中获取用户
  • 获取用户的帖子

->save($model) 有点诡计。这要求传递给 ->save($object) 函数的对象是关系的实例。在我们的例子中,关系是 posts() ,因此 $post 只需是 App\Post 的实例(或者无论您在哪里) Models 命名空间是)。

关于php - 有人能解释一下 Laravel 关系是如何运作的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38622242/

相关文章:

php - 根据先前查询的结果显示某些项目的 SQL 查询有什么问题?

php - 循环从 1 到 100 的数字,每 10 个数字将数字除以 10

php - Laravel 命名 'Where' 和 AJAX 语句

javascript - 从导入的文件访问 vue

laravel - 如何在 October CMS 中创建自己的功能?

php - 如何从网站上抓取所有内容?

php - 根据另一个表的值有条件地更新一个表

php - Nginx 不显示 404 页面,而是在根目录中提供索引文件

php - Laravel 5.2 关注用户系统

php - Lumen:在 Blade View 中获取 URL 参数