首页 > 解决方案 > 拉拉维尔 | 获取列的值

问题描述

我在使用 laravel 时遇到问题,所有详细信息都在下面给出。

我在 mysql 数据库中有 2 个表:书籍和笔。

书籍和笔有列:bookid,bookname & penid,penname,分别。

用户有一个事务表:bookid 或 penid。

我正在检索特定用户的所有交易:

$usertransactions = $user->usertransactions;

不用担心用户和用户事务模型之间的关系,它的所有设置。

上述函数的响应是:

"data": {

    "Id": "1",
    "Bookid": "27",

}

或者

"data": {

    "Id": "2",
    "Penid": "42",

}

我希望结果如下所示:

"data": {

    "Id": "1",
    "Bookid": "27",
    "Bookname" : "bookname from books table using the Bookid from response"

}

我会很感激帮助。

问候

标签: laravelapilaravel-5

解决方案


首先,命名列的常见做法是snake_case. 所以最好命名bookidbook_id. 而且对于您的关系和函数名称,最好保留它CamelCase。所以usertransactions与其写不如写userTransactions

让我们回到你的问题。由于您的响应中有 book_id,因此您应该能够在模型之间建立UserTransaction关系Book。在Book model

public function userTransactions() {
    return $this->belongsToMany(UserTransaction::class); //it can be one to many or many to many base on your logic. I assume Many to many
}

那么你应该定义反向关系UserTransaction model

public function books(){
    return $this->belongsToMany(Book::class);
}

load现在您可以使用类似的方法加载所有书籍对象$usertransactions = $user->usertransactions->load('books')

如果您希望您的响应完全匹配,请使用https://laravel.com/docs/5.6/eloquent-resources@Maraboc 提到的。

祝你好运!


推荐阅读