簡體   English   中英

Laravel雄辯的多對多返回為空

[英]Laravel eloquent many to many returns empty

因此,我試圖設法在應用程序中使用雄辯的多對多關系。

我有以下三個表

   user
    +----------------+------------------+------+-----+---------------------+----------------+
    | Field          | Type             | Null | Key | Default             | Extra          |
    +----------------+------------------+------+-----+---------------------+----------------+
    | id             | int(10) unsigned | NO   | PRI | NULL                | auto_increment |
    | first_name     | varchar(255)     | NO   |     | NULL                |                |
    | last_name      | varchar(255)     | NO   |     | NULL                |                |
    | email          | varchar(255)     | NO   | UNI | NULL                |                |
    | password       | varchar(60)      | NO   |     | NULL                |                |
    | remember_token | varchar(100)     | YES  |     | NULL                |                |
    | created_at     | timestamp        | NO   |     | 0000-00-00 00:00:00 |                |
    | updated_at     | timestamp        | NO   |     | 0000-00-00 00:00:00 |                |
    | active         | enum('yes','no') | NO   |     | NULL                |                |
    | last_login     | timestamp        | NO   |     | 0000-00-00 00:00:00 |                |
    +----------------+------------------+------+-----+---------------------+----------------+

    user_has_address
    +------------+------------------+------+-----+---------+-------+
    | Field      | Type             | Null | Key | Default | Extra |
    +------------+------------------+------+-----+---------+-------+
    | address_id | int(10) unsigned | YES  | MUL | NULL    |       |
    | users_id   | int(10) unsigned | YES  | MUL | NULL    |       |
    +------------+------------------+------+-----+---------+-------+

    address
    +---------------+----------------------------+------+-----+---------------------+----------------+
    | Field         | Type                       | Null | Key | Default             | Extra          |
    +---------------+----------------------------+------+-----+---------------------+----------------+
    | id            | int(10) unsigned           | NO   | PRI | NULL                | auto_increment |
    | name_number   | varchar(45)                | NO   |     | NULL                |                |
    | first_line    | varchar(45)                | NO   |     | NULL                |                |
    | second_line   | varchar(45)                | NO   |     | NULL                |                |
    | town_city     | varchar(45)                | NO   |     | NULL                |                |
    | state_country | varchar(45)                | NO   |     | NULL                |                |
    | post_zip      | varchar(45)                | NO   |     | NULL                |                |
    | type          | enum('delivery','billing') | NO   |     | NULL                |                |
    | created_at    | timestamp                  | NO   |     | 0000-00-00 00:00:00 |                |
    | updated_at    | timestamp                  | NO   |     | 0000-00-00 00:00:00 |                |
    | deleted_at    | timestamp                  | YES  |     | NULL                |                |
    +---------------+----------------------------+------+-----+---------------------+----------------+

在我的用戶存儲庫中,我有以下內容

namespace App\Libraries\Repositories\Core\Users;

use Schema;
use App\Models\Core\User;
use Bosnadev\Repositories\Eloquent\Repository;
use Symfony\Component\HttpKernel\Exception\HttpException;

class UserRepository extends Repository
{
    public function getUsersAddresses()
    {
        return $this->userModel->hasManyThrough('App\Models\Bundle\Addresses\Address','App\Models\Bundle\Addresses\UserHasAdress','id','address_id');
    }
}

我返回了一個顯示父類和相關類的對象,但我實際上未返回我的用戶地址。 我缺少什么嗎?

Alexrussell在他的評論中指出了一些可以解決的優點,但是我認為您的直接問題是在返回行末尾缺少->get()

沒有它,您將需要像下面這樣調用您的方法:

$repository->getUsersAddresses()->get();

由於hasManyThrough將返回Illuminate/Database/Eloquent/Relations/HasManyThrough的實例, Illuminate/Database/Eloquent/Relations/HasManyThrough不是實際結果

供參考: https : //laravel.com/api/5.2/Illuminate/Database/Eloquent/Relations/HasManyThrough.html

請注意此處的示例: https : //laravel.com/docs/5.1/eloquent-relationships#many-to-many

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    /**
     * The roles that belong to the user.
     */
    public function roles()
    {
        return $this->belongsToMany('App\Role');
    }
}

示例用法包括get(): $roles = App\\User::find(1)->roles()->orderBy('name')->get();

希望這可以幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM