laravel模型获取具有自定义值的数据

时间:2017-08-03 08:43:30

标签: php mysql laravel

我有laravel的问题。我创建了名为Zlecenia的模型,需要使用自定义变量获取数据。我需要为此模型添加url值。

我的控制器

$zlecenia = new Zlecenia();
$q = $zlecenia->with('users')->withLinks()
    ->orderBy('zlecenia.id', 'desc')
    ->where('active', 1)
    ->where('end',0)
    ->where('kategorie', '>', 0)
    ->take(5)
    ->get();

我的模特

public function withLinks($id,$slug){
    return route('ZleceniaZlecenie',['id'=>$id,'slug'=>$slug]);
}

如何获取其后获取视图的数据:

{
"id": 21,
"created_at": "2017-08-01 08:51:08",
"updated_at": "2017-08-01 08:51:08",
"name": "fasd asdf",
"active": 1,
"user_id": 3,
"description": "asd fasdf",
"winner_id": null,
"end": 0,
"kategorie": 4,
"link": "slugValue",
"users": {
"id": 3,
"name": "test",
"email": "kontakt@teamwant.pl",
},
"url": "http://127.0.0.1:8000/test/3/slugValue"
},

如果你能看到我添加一个" url"值和这个值我需要从函数withLinks()生成它。

withLinks中的slug ==来自model / db的链接值

id in withLinks == id from model / db

2 个答案:

答案 0 :(得分:0)

首先在控制器中进行活动记录查询是一种不好的做法,如果我理解了问题你需要在视图中路径两个模型(模型数组),首先:

public static function getSomeModel() {

return self::with('users')
    ->orderBy('zlecenia.id', 'desc')
    ->where('active', 1)
    ->where('end',0)
    ->where('kategorie', '>', 0)->take(5)->get();

}

第二 - 网址

控制器可以是这样的:

public function getSomeRoute() {

$input = Input::all();

isset($input["id"]) $id = $input["id"];
isset($input["slug"]) $slug = $input["slug"];

$models = ["SomeModel" => SomeModel::getSomeModel(), "url" => "http://example.com/".$id."/".$slug];

return view("view", ["models" => $models]);

}

答案 1 :(得分:0)

您可以使用select功能动态创建价值持有者。 我来自Codeigniter背景,但你可以得到一般的想法。

$zlecenia = new Zlecenia();
$q = $zlecenia->with('users')
    ->select('users.*', DB::raw("CONCAT('http://127.0.0.1:8000/test/', '{$id}/', '{$slug}') AS url"))
    ->orderBy('zlecenia.id', 'desc')
    ->where('active', 1)
    ->where('end',0)
    ->where('kategorie', '>', 0)
    ->take(5)
    ->get();