2017-04-12 37 views
1

我試圖將我爲我的控制器編寫的代碼轉換爲模型,以便將信息拉入刀片中。將控制器代碼重寫爲Model Laravel 5

基本上我從我的數據庫中標記爲「邊距」的表格中隨機選取百分比並將其乘以多個項目的成本。然後,我需要做的是這樣

@foreach($item_cost as $ic) 
Item Name: {{ $ic->name }} Cost: {{ $ic->cost }} 
@endforeach 

它拉從「項目」表中的項目名稱,然後在「邊緣」表乘以保證金基本成本。

public function drug_margins() 
{ 
    $locations = Locations::inRandomOrder()->get()->first(); 
    $drugs = Drugs::inRandomOrder()->get()->first(); 
    $margins = Margins::inRandomOrder()->get()->first(); 
    $add = $locations->margin*$drugs->base_value*$margins->percent; 
    $cost = $add+$drugs->base_value; 
    return "<h2>Trismegistus Drug Cost Randomizer</h2><br>Drug Name: " . $drugs->name . "<br>" . "Location: " . $locations->name . "<br>" . "Location Margin: " . $locations->margin . "<br>" . "Margin: " . $margins->percent . "<br>" . "Drug Base Value: " . $drugs->base_value . "<br>" . "New Cost: " . $cost . "<br>"; 
} 

如果這沒有意義,請讓我知道,所以我可以澄清。

TIA!

我試過使用來自第一個答案的信息,但它不工作100%。成本在不斷變化,但「藥物名稱」無論如何都保持不變。

這裏是我的模型:

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Drugs extends Model 
{ 
// 
protected $table = 'drugs'; 
public function user_data() 
{ 
    return $this->belongsTo('user_data', 'TableID', 'id'); 
} 

public function getCostAttribute() 
{ 
    $locations = Locations::inRandomOrder()->get()->first(); 
    $drugs = Drugs::inRandomOrder()->get()->first(); 
    // $drugs = Drugs::find(1)->get()->first(); 
    $margins = Margins::inRandomOrder()->get()->first(); 
    $add = $locations->margin*$drugs->base_value*$margins->percent; 
    $cost = $add+$drugs->base_value; 
    //$cost = array('name' => $drugs->name, 'base_value' => $drugs- >base_value, 'cst' => $cst); // Presents array but can't get it to work as variables in view 
    return $cost; 
    } 
} 

,這裏是我的控制器:

public function drug_margins() 
{ 
    $drugs = Drugs::inRandomOrder()->first(); 
    $drugs = $drugs->cost; 
    dd($drugs); // Testing Phase 
    // return view('test.test', compact('drugs')); 
} 

有人能看到我在做什麼錯。現在藥物費用再次正在改變,但藥物名稱仍然是第一種阿司匹林藥物。

再次感謝!

回答

0

您可以在模型中定義accessor

public function getCostAttribute() 
{ 
    // write your logic here 
    return $cost; 
} 

然後你可以使用它作爲:

{{ $model->cost }} 
+0

那現在看起來很酷,我將能夠做一個foreach上,要把表中的所有成本都拉回來? – Trismegistus

+0

好吧,部分工作,但我不拉回所有的信息正在改變。由於某種原因,藥物名稱沒有改變。 – Trismegistus