отношения hasMany возвращают неопределенное свойство - PullRequest
0 голосов
/ 17 октября 2018

Я хотел бы перечислить все MovimentoProdutoUnidade, что movimento_id = 3, используя функцию hasMany.

Моя модель Movimento:

use Illuminate\Database\Eloquent\Model;
use App\Unidade;

class Movimento extends Model
{
    protected $fillable = [
    "movimento", "descricao", "requisitante", "despachante", "data", "unidade_ori_id", "unidade_des_id"
    ];
    protected $table = "movimentos";

    public function movimentoProdutoUnidade(){
        return $this->hasMany('App\MovimentoProdutoUnidade', 'movimento_id');
    }
}

Моя модель MovimentoProdutoUnidade

use Illuminate\Database\Eloquent\Model;
use App\Movimento;

class MovimentoProdutoUnidade extends Model
{
    protected $fillable = [
        "movimento_id", "unidadeProduto_id"
    ];
    protected $table = "movimento_produtounidades";

    public function movimento(){
        return $this->belongsTo('App\Movimento', 'movimento_id');
    }
}

Мой контроллер:

public function licitacao(Request $request){
    $movimentos = Movimento::where('unidade_ori_id', 3)->movimentoProdutoUnidade;

    dd($movimentos);

    //return view('relatorios.licitacao', compact('movimentos'));
}

Функциональное возвращение dd

Неопределенное свойство: Illuminate \ Database \ Eloquent \ Builder :: $ movimentoProdutoUnidade

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

Как указано в комментарии, который я сделал, попробуйте использовать функцию first следующим образом:

Movimento::where('unidade_ori_id', 3)->first()->movimentoProdutoUnidade;

Всегда помните, что после условия используйте get(), first() или find() функции для извлечения данных из базы данных.

Посмотрите на эту ссылку

0 голосов
/ 17 октября 2018

Ваша ошибка в том, что вы не вызываете first() для объекта построителя запросов, поэтому у вас есть экземпляр Builder (у которого нет свойства $movimentoProdutoUnidade) вместо Movimento модели:

$movimento = Movimento::where('unidade_ori_id', 3)->first();
$movimento_produto_unidade = $movimento->movimentoProdutoUnidade;

Однако, если вы хотите, чтобы все MovimentoProdutoUnidade, попробуйте подумать "задом наперед":

$movimento_produto_unidade = MovimentoProdutoUnidade::whereHas('movimento', function ($query) {
  return $query->where('unidade_ori_id', 3);
})
->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...