想象我有這樣幾個簡單的對象:如何覆蓋hasMany關係的結果?
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
public function posts()
{
return $this->hasMany("App\Post");
}
}
class Post extends Model
{
public function user()
{
return $this->belongsTo("App\User");
}
}
我們會說\App\Post
對象有一個名爲jsondata
的數據庫列包含JSON編碼的數據。當我想在一個視圖來顯示用戶的職位與該列解碼,我需要這樣做控制器:
$posts = Auth::user()->posts()->get();
foreach ($posts as $post) {
$post->jsondata = json_decode($post->jsondata);
}
return view("user.show", ["posts"=>$posts]);
有沒有一種方法,以避免在我的控制器foreach
環路,做JSON解碼的一個較低的水平?
我敢肯定我可以在App\User::posts()
中做到這一點,但這並不能幫助我需要顯示解碼數據的其他地方。我試着定義App\Post::get()
以覆蓋父方法,但它不起作用,因爲hasMany()
似乎根本沒有返回模型的實例。
應該是更好還是不好。這取決於您是否還想保留編碼數據屬性。 Laravel爲您提供了許多方法來完成相同的事情,但並不總是最好的方法,但是對問題有好的或壞的方法 – Alessandro