В Laravel 5.7 вы можете создать наблюдателя модели из командной строки следующим образом:
php artisan make:observer ClientObserver --model=Client
Затем в вашем app \ AppServiceProvider сообщите загрузочному методу модель для наблюдения и имя класса наблюдателя. .
use App\Client;
use App\Observers\ClientObserver;
class AppServiceProvider extends ServiceProvider
{
public function boot()
{
Client::observe(ClientObserver::class);
}
...
}
Затем в вашем приложении \ Observers \ вы должны найти наблюдателя, которого вы создали выше, в данном случае ClientObserver, уже заполненного созданными / обновленными / удаленными обработчиками событий, чтобы вы могли заполнить их логикой. Мой ClientObserver:
namespace App\Observers;
use App\Client;
class ClientObserver
{
public function created(Client $client)
{
// do your after-model-creation logic here
}
...
}
Мне действительно нравится простота этого способа сделать это. Ссылка https://laravel.com/docs/5.7/eloquent#events
Почему бы вам не использовать строку . Присоединиться к самому
?
string.Join("<br/>", collection.Select(e => e.TextProp).ToArray());
Вы можете использовать метод агрегирования ...
var myResults = (from myString in MyStrings
select myString)
.Aggregate(string.Empty, (results, nextString)
=> string.Format("{0}<br />{1}", results, nextString));
или
var myResults = MyStrings.Aggregate(string.Empty, (results, nextString)
=> string.Format("{0}<br />{1}", results, nextString));
Обычным способом было бы использовать один из операторов агрегирования ( Агрегат
, Сумма
, Среднее значение
и т. Д.), Но это полностью зависит от типа и того, что вы хотите сделать. Какой тип вас интересует?
РЕДАКТИРОВАТЬ: Итак, вы хотите объединить строки ... Я не думаю , что есть что-нибудь, что сделает это в самом LINQ to SQL. Параметры:
Большинство решений здесь довольно неэффективны, если у вас есть большое количество значений, которые вы хотите объединить. Кроме того, они не так удобочитаемы. Если вы собираетесь делать подобные вещи часто, то для этого стоит создать свой собственный метод расширения. Реализация ниже позволяет вам сделать эквивалент string.Join (",", arrayOfStrings)
, где arrayOfStrings может быть IEnumerable
, а разделителем может быть любой объект в все. Это позволяет вам делать что-то вроде этого:
var names = new [] { "Fred", "Barney", "Wilma", "Betty" };
var list = names
.Where(n => n.Contains("e"))
.Join(", ");
Мне нравятся две вещи:
public static string Join<TItem,TSep>(
this IEnumerable<TItem> enuml,
TSep separator)
{
if (null == enuml) return string.Empty;
var sb = new StringBuilder();
using (var enumr = enuml.GetEnumerator())
{
if (null != enumr && enumr.MoveNext())
{
sb.Append(enumr.Current);
while (enumr.MoveNext())
{
sb.Append(separator).Append(enumr.Current);
}
}
}
return sb.ToString();
}