我如何使用与Laravel的关系?

时间:2018-02-22 11:14:25

标签: php laravel

我的数据库stockcomment表如下;

id|user_id|stock_id|comment
1 |   10  |  9034  |RC MONSTER CAR
2 |   1  |   9034  |very cool car

我的数据库用户表如下;

id |user_name           |
1  |   Ufuk ÇAĞLAR      |
10 |   Mariana Atencio  |

我如何相互联系。

如何使用评论访问用户信息。请帮帮我。

我想做输出:

[{"id":1,"user  _id":1,"stock_id":9034,"comment":RC MONSTER CAR,"user_name":"Ufuk ÇAĞLAR",
 "id":2,"user  _id":10,"stock_id":9034,"comment":VERY COOL CAR,"user_name":"MARIANA ATANCIO",]

5 个答案:

答案 0 :(得分:3)

假设您拥有UserStock模型以及usersstocksstockcomment表格,您可以设置用户模型的关系

public function stock() {
    return $this->belongsTo(Stock::class)->withPivot('comment');
}

然后在你的股票模型

public function users() {
    return $this->hasMany(User::class)->withPivot('comment');
}

然后你打电话给他们:

$stock = User::find($id)->stock; //Stock from this user
//or
$users = Stock::find($id)->users; //Users from this stock

修改

  

如何使用评论访问用户信息。请帮帮我。

     

我想做输出:

使用Query Builder

$data = DB::table('stockcomment')->where('stock_id', 9034)->get();

或者如果您拥有StockComment模型并且与Stock建立了关系,则可以执行以下操作:

$data = StockComment::where('stock_id', 9034)->get();

$data将是:

[
   {
      "id":1,"user_id":1,"stock_id":9034,"comment":RC MONSTER CAR,"user_name":"Ufuk ÇAĞLAR"
   },
   {
       "id":2,"user_id":10,"stock_id":9034,"comment":VERY COOL CAR,"user_name":"MARIANA ATANCIO"
   }
]

答案 1 :(得分:3)

您可以定义User模型和StockComment

现在在用户模型中。

public function stockComments(){
   return  $this->hasMany(StockComment::class);

}

现在,您可以使用$user->stockComments

访问用户对象

这是一个例子

$user = User::find($id);
$user->stockComments;

希望这有帮助

答案 2 :(得分:1)

StockComment模型中定义此关系:

public function user()
{
    return $this->belongsTo(User::class);
}

User模型中的这种关系:

public function stockComments()
{
    return $this->hasMany(StockComment::class);
}

https://laravel.com/docs/5.5/eloquent-relationships

答案 3 :(得分:1)

在用户模型上,您需要创建一个hasMany关系。

public function stockcomments()
{
    return $this->hasMany(StockComment::class);
}

创建后,您就可以通过

获取评论了
$user->stockcomments;

这将返回一个允许您迭代的集合

答案 4 :(得分:0)

您可以使用联接来实现期望结果,这是您更新的代码

$result = User::join('stockcomment', 'users.id', '=', 'stockcomment.user_id')
->select('users.id', 'stockcomment.stock_id', 'stockcomment.comment',stockcomment.username)
->get();