簡體   English   中英

Laravel:雄辯地返回了一個我無法迭代的對象

[英]Laravel: Eloquent returning an object I can't iterate over

我有一個像這樣的mySQL DB模式:

table RECIPES:

int id, PK;
int salesman_id;
int doctor_id;
date order_date;
int status;

table RECIPE_STATUS:

int id, PK;
int recipe_status_code;
varchar recipe_status_name;

在Laravel中,我有以下php類:

 AdminRecipesController.php namespace RatCMS\\Controllers; use App\\Http\\Controllers\\Controller; use Auth; use RatCMS\\Models\\Recipes; use RatCMS\\Models\\RecipeStatus; use Illuminate\\Http\\Request; use Illuminate\\Support\\Facades\\Input; class AdminRecipesController extends Controller { public function index() { $recipes = Recipes::with('recipeStatus')->get(); return view('admin.recipes.news', compact('recipes')); } } Recipes.php <?php namespace RatCMS\\Models; use Illuminate\\Database\\Eloquent\\Model; class Recipes extends Model { protected $table = 'RECIPES'; protected $fillable = ['salesman_id', 'doctor_id', 'order_date', 'status']; public function recipeStatus() { return $this->hasOne(\\RatCMS\\Models\\RecipeStatus::class, 'recipe_status_code', 'status'); } } RecipeStatus.php <?php namespace RatCMS\\Models; use Illuminate\\Database\\Eloquent\\Model; class RecipeStatus extends Model { protected $table = 'RECIPE_STATUS'; protected $fillable = []; public function recipes() { return $this->belongsTo(\\RatCMS\\Models\\Recipes::class); } } blade view <div class="box-body"> @include('admin.partials.session_success') @if($recipes->isEmpty()) <p class="text-center">No recipes available.</p> @else <table class="table table-bordered"> <tr> <th style="width: 10px">#</th> <th>Salesman</th> <th>Doctor</th> <th>Date</th> <th>Status</th> <th style="width:100px">Actions</th> </tr> @foreach($recipes as $recipe) {{ $recipe }} <tr> <td>{{ $recipe->id }}</td> <td>{{ $recipe->salesman_id }}</td> <td>{{ $recipe->doctor_id }}</td> <td>{{ $recipe->order_date }}</td> <td>{{ $recipe->recipe_status->recipe_status_name }}</td> <td> <form style="display: inline-block" action="{{ url('admin/recipes/' . $recipe->id) }}" method="POST"> {{ csrf_field() }} <input name="_method" type="hidden" value="DELETE"> <button type="submit" class="btn btn-danger"><i class="fa fa-close" aria-hidden="true"></i> Delete</button> </form> </td> </tr> @endforeach </table> @endif </div> 

在視圖中執行{{ $recipe }}時,得到以下結果:

{“ id”:1,“ salesman_id”:“ 4”,“ doctor_id”:“ 3”,“ order_date”:null,“ status”:“ 0”,“ recipe_status”:{“ id”:1,“ recipe_status_code “:” 0“,” recipe_status_name“:”未接收“}}

因此,雄辯者會返回一些有關配方狀態(未接收的文本)的數據,但是當我執行{{ $recipe->recipe_status }}它每次都會失敗。 甚至$ recipes ['recipe_status']也無濟於事。

有人可以幫忙嗎? 謝謝

關系應該是belongsTo()

public function recipeStatus() {
    return $this->belongsTo(\RatCMS\Models\RecipeStatus::class, 'status', 'recipe_status_code');
}

使用正確的關系,您的代碼會將關系數據添加到集合中,因此您將能夠獲取狀態:

$recipe->recipeStatus->recipe_status_name

暫無
暫無

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

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