当我保存帖子时,它会保存发布该帖子的用户的 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
中查找具有id
的user
与帖子相关行
上的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/